From d0db790e5e427712991159e8237a3356efe344ec Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 16 Mar 2015 20:18:36 +0100 Subject: [PATCH 001/100] =?UTF-8?q?[MEGA2560]=20PWR=20OFF=20fix.=20Thanks?= =?UTF-8?q?=20Andr=C3=A9=20for=20the=20review!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- radio/src/targets/mega2560/board_mega2560.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/targets/mega2560/board_mega2560.cpp b/radio/src/targets/mega2560/board_mega2560.cpp index 4dd09ff69..fc95c3223 100644 --- a/radio/src/targets/mega2560/board_mega2560.cpp +++ b/radio/src/targets/mega2560/board_mega2560.cpp @@ -100,7 +100,7 @@ uint8_t pwrCheck() void pwrOff() { - PORTH = 0x1F; // PortH-4 set to 0 + PORTH = 0xEF; // PortH-4 set to 0 } FORCEINLINE uint8_t keyDown() From 2a3c5958ad83b073c91672b8a4e25ee1f65f2b06 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 17 Feb 2015 19:35:52 +0100 Subject: [PATCH 002/100] Fixes #2056 - Needs tests! --- radio/src/gui/Taranis/menu_general_setup.cpp | 12 +++++++++++- radio/src/myeeprom.h | 2 +- radio/src/telemetry/telemetry.cpp | 16 ++++++++++++++++ radio/src/translations.cpp | 2 ++ radio/src/translations.h | 2 ++ radio/src/translations/cz.h.txt | 2 ++ radio/src/translations/de.h.txt | 2 ++ radio/src/translations/en.h.txt | 6 ++++-- radio/src/translations/es.h.txt | 2 ++ radio/src/translations/fi.h.txt | 2 ++ radio/src/translations/fr.h.txt | 2 ++ radio/src/translations/it.h.txt | 2 ++ radio/src/translations/pl.h.txt | 2 ++ radio/src/translations/pt.h.txt | 2 ++ radio/src/translations/se.h.txt | 2 ++ 15 files changed, 54 insertions(+), 4 deletions(-) diff --git a/radio/src/gui/Taranis/menu_general_setup.cpp b/radio/src/gui/Taranis/menu_general_setup.cpp index 791ce551e..e94242c29 100755 --- a/radio/src/gui/Taranis/menu_general_setup.cpp +++ b/radio/src/gui/Taranis/menu_general_setup.cpp @@ -90,7 +90,9 @@ enum menuGeneralSetupItems { CASE_REVPLUS(ITEM_SETUP_BACKLIGHT_COLOR) ITEM_SETUP_FLASH_BEEP, CASE_SPLASH_PARAM(ITEM_SETUP_DISABLE_SPLASH) + CASE_GPS(ITEM_SETUP_LABEL_GPS) CASE_GPS(ITEM_SETUP_TIMEZONE) + CASE_GPS(ITEM_SETUP_ADJUST_RTC) CASE_GPS(ITEM_SETUP_GPSFORMAT) CASE_PXX(ITEM_SETUP_COUNTRYCODE) ITEM_SETUP_LANGUAGE, @@ -126,7 +128,7 @@ void menuGeneralSetup(uint8_t event) } #endif - MENU(STR_MENURADIOSETUP, menuTabGeneral, e_Setup, ITEM_SETUP_MAX, { 2, 2, 1, LABEL(SOUND), 0, 0, 0, 0, 0, 0, 0, CASE_VARIO_CPUARM(LABEL(VARIO)) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, 0, CASE_REVPLUS(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(0) CASE_GPS(0) CASE_PXX(0) 0, 0, IF_FAI_CHOICE(0) CASE_MAVLINK(0) 0, 0, LABEL(TX_MODE), 0, 1/*to force edit mode*/ }); + MENU(STR_MENURADIOSETUP, menuTabGeneral, e_Setup, ITEM_SETUP_MAX, { 2, 2, 1, LABEL(SOUND), 0, 0, 0, 0, 0, 0, 0, CASE_VARIO_CPUARM(LABEL(VARIO)) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, 0, CASE_REVPLUS(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(LABEL(GPS)) CASE_GPS(0) CASE_GPS(0) CASE_GPS(0) CASE_PXX(0) 0, 0, IF_FAI_CHOICE(0) CASE_MAVLINK(0) 0, 0, LABEL(TX_MODE), 0, 1/*to force edit mode*/ }); int sub = m_posVert; @@ -412,12 +414,20 @@ void menuGeneralSetup(uint8_t event) #endif #if defined(FRSKY) && defined(FRSKY_HUB) && defined(GPS) + case ITEM_SETUP_LABEL_GPS: + lcd_putsLeft(y, STR_GPS); + break; + case ITEM_SETUP_TIMEZONE: lcd_putsLeft(y, STR_TIMEZONE); lcd_outdezAtt(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.timezone, attr|LEFT); if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.timezone, -12, 12); break; + case ITEM_SETUP_ADJUST_RTC: + g_eeGeneral.adjustRTC = onoffMenuItem(g_eeGeneral.adjustRTC, RADIO_SETUP_2ND_COLUMN, y, STR_ADJUST_RTC, attr, event); + break; + case ITEM_SETUP_GPSFORMAT: g_eeGeneral.gpsFormat = selectMenuItem(RADIO_SETUP_2ND_COLUMN, y, STR_GPSCOORD, STR_GPSFORMAT, g_eeGeneral.gpsFormat, 0, 1, attr, event); break; diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 93e079c50..c02fcc6a5 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -742,7 +742,7 @@ PACK(typedef struct { uint8_t disableAlarmWarning:1; uint8_t stickMode:2; int8_t timezone:5; - uint8_t spare1:1; + uint8_t adjustRTC:1; uint8_t inactivityTimer; uint8_t mavbaud:3; SPLASH_MODE; /* 3bits */ diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 1a3101b3f..2239661f7 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -53,12 +53,28 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin datetime.month = (uint8_t) ((data & 0x00ff0000) >> 16); datetime.day = (uint8_t) ((data & 0x0000ff00) >> 8); datetime.datestate = 1; + if (g_eeGeneral.adjustRTC) { + struct gtm t; + gettime(&t); + t.tm_year = datetime.year-1900; + t.tm_mon = datetime.month; + t.tm_mday = datetime.day; + rtcSetTime(&t); + } } else { datetime.hour = ((uint8_t) ((data & 0xff000000) >> 24) + g_eeGeneral.timezone + 24) % 24; datetime.min = (uint8_t) ((data & 0x00ff0000) >> 16); datetime.sec = (uint16_t) ((data & 0x0000ff00) >> 8); datetime.timestate = 1; + if (g_eeGeneral.adjustRTC) { + struct gtm t; + gettime(&t); + t.tm_hour = datetime.hour; + t.tm_min = datetime.min; + t.tm_sec = datetime.sec; + rtcSetTime(&t); + } } if (datetime.year == 0) { return; diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 48ce9ee21..738db4af3 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -248,6 +248,8 @@ const pm_char STR_THROTTLEWARNING[] PROGMEM = TR_THROTTLEWARNING; const pm_char STR_SWITCHWARNING[] PROGMEM = TR_SWITCHWARNING; #ifdef FRSKY const pm_char STR_TIMEZONE[] PROGMEM = TR_TIMEZONE; +const pm_char STR_ADJUST_RTC[] PROGMEM = TR_ADJUST_RTC; +const pm_char STR_GPS[] PROGMEM = TR_GPS; const pm_char STR_GPSCOORD[] PROGMEM = TR_GPSCOORD; const pm_char STR_VARIO[] PROGMEM = TR_VARIO; const pm_char STR_PITCH_AT_ZERO[] PROGMEM = TR_PITCH_AT_ZERO; diff --git a/radio/src/translations.h b/radio/src/translations.h index 8f9cdbcda..b297af880 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -427,6 +427,8 @@ extern const pm_char STR_SPLASHSCREEN[]; extern const pm_char STR_THROTTLEWARNING[]; extern const pm_char STR_SWITCHWARNING[]; extern const pm_char STR_TIMEZONE[]; +extern const pm_char STR_ADJUST_RTC[]; +extern const pm_char STR_GPS[]; extern const pm_char STR_GPSCOORD[]; extern const pm_char STR_VARIO[]; extern const pm_char STR_PITCH_AT_ZERO[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 76eef770b..18c5fc535 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -621,6 +621,8 @@ #define TR_SWITCHWARNING TR("* Spínače", INDENT "Polohy Spínačů") #define TR_POTWARNING TR("* Potenc.", INDENT "Nastavení Pot.") #define TR_TIMEZONE "časové pásmo" +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD TR("Pořadí kanálů", "Výchozí pořadí kanálů") #define TR_STICKS "Sticks" #define TR_POTS "Pots" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index b47d7ab97..8241fd4dc 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -669,6 +669,8 @@ #define TR_SWITCHWARNING TR("Sch. Alarm", INDENT "Schalter-Alarm") #define TR_POTWARNING TR("Pot Warn.", INDENT "Poti-Warnung") #define TR_TIMEZONE TR("Zeitzone", "GPS-Zeitzone +/-Std") +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD TR("Kanalanordnung", "Kanalvoreinstellung") #define TR_STICKS "Knüppel" #define TR_POTS "Potis" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 4d403c78d..09490e257 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -668,7 +668,9 @@ #define TR_THROTTLEWARNING TR(IF_CPUARM(INDENT) "T-Warning", INDENT "Throttle State") #define TR_SWITCHWARNING TR(IF_CPUARM(INDENT) "S-Warning", INDENT "Switch Positions") #define TR_POTWARNING TR(IF_CPUARM(INDENT) "Pot Warn.", INDENT "Pot Positions") -#define TR_TIMEZONE TR("Time Zone", "GPS Time zone") +#define TR_TIMEZONE TR("Time Zone", INDENT "Time zone") +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD TR("Rx Channel Ord", "Default channel order") #define TR_STICKS "Sticks" #define TR_POTS "Pots" @@ -771,7 +773,7 @@ #define TR_MINRSSI "Min Rssi" #define TR_LATITUDE "Latitude" #define TR_LONGITUDE "Longitude" -#define TR_GPSCOORD TR("GPS Coords", "GPS coordinate format") +#define TR_GPSCOORD TR("GPS Coords", INDENT "Coordinate format") #define TR_VARIO TR("Vario", "Variometer") #define TR_PITCH_AT_ZERO INDENT "Pitch at Zero" #define TR_PITCH_AT_MAX INDENT "Pitch at Max" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index de3d0fb45..098519165 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -618,6 +618,8 @@ #define TR_SWITCHWARNING TR("Aviso-I", INDENT "Aviso Intrptor") #define TR_POTWARNING TR("Pot Warn.", INDENT "Pot Warning") #define TR_TIMEZONE TR("Zona Hora", "GPS Zona Hora") +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD TR("Rx Orden canal", "Orden habitual canales") #define TR_STICKS "Sticks" #define TR_POTS "Pots" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 3cc4f2746..2eabacb29 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -618,6 +618,8 @@ #define TR_SWITCHWARNING TR("S-Warning", INDENT "Switch Warning") #define TR_POTWARNING TR("Pot Warn.", INDENT "Pot Warning") #define TR_TIMEZONE TR("Time Zone","GPS Time zone") +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD TR("Rx Channel Ord","Default channel order") #define TR_STICKS "Sticks" #define TR_POTS "Pots" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 4ad9984f3..ce283f777 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -673,6 +673,8 @@ #define TR_SWITCHWARNING TR(IF_CPUARM(INDENT) "Alerte int", INDENT "Pos. interrupteurs") #define TR_POTWARNING TR(IF_CPUARM(INDENT) "Alerte pot", INDENT "Pos. potentios") #define TR_TIMEZONE "Fuseau horaire" +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD TR("Ordre voies RX","Ordre des voies préféré") #define TR_STICKS "Manches" #define TR_POTS "Potentios" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index f310e17ee..698d139b5 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -618,6 +618,8 @@ #define TR_SWITCHWARNING TR("Avv. Int.", INDENT "Avviso Interr.") #define TR_POTWARNING TR("Avv. Pot.", INDENT "Avviso Pot.") #define TR_TIMEZONE "Ora locale" +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD "Ordine ch RX" #define TR_STICKS "Sticks" #define TR_POTS "Pots" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a45e0c107..0332a0eae 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -616,6 +616,8 @@ #define TR_SWITCHWARNING TR(IF_CPUARM(INDENT) "OstrzPrzeł", INDENT "PozycjaPrzeł") #define TR_POTWARNING TR(IF_CPUARM(INDENT) "Ostrz.Poten.", INDENT "PozycjaPotencj.") #define TR_TIMEZONE TR("Strefa czasowa" ,"Strefa czasowa GPS") +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD TR("KolejnKan.RX", "Bazowa kolejność kanałów") #define TR_STICKS "Sticks" #define TR_POTS "Pots" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 0e10202e9..cf65ee016 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -618,6 +618,8 @@ #define TR_SWITCHWARNING TR("Avisa Chav", INDENT "Avisa Chav") #define TR_POTWARNING TR("Pot Warn.", INDENT "Pot Warning") #define TR_TIMEZONE "Time Zone" +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD "Ordem Canal RX" #define TR_STICKS "Sticks" #define TR_POTS "Pots" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index c235ae993..cc7dbcc7e 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -618,6 +618,8 @@ #define TR_SWITCHWARNING TR("Bryt.varn.", INDENT "Brytarvarning") #define TR_POTWARNING TR("Rattvarn.", INDENT "Rattvarning") #define TR_TIMEZONE TR("Tidszon", "GPS Tidszon") +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD "Kanaler i RX" #define TR_STICKS "Sticks" #define TR_POTS "Pots" From 01e6c60cf5f470a3f862ae6d8cc34dc36b1adce4 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 17 Feb 2015 21:34:54 +0100 Subject: [PATCH 003/100] Companion compilation fix --- radio/src/targets/sky9x/rtc_driver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/targets/sky9x/rtc_driver.cpp b/radio/src/targets/sky9x/rtc_driver.cpp index e39e6e0fa..ddd0ea50d 100644 --- a/radio/src/targets/sky9x/rtc_driver.cpp +++ b/radio/src/targets/sky9x/rtc_driver.cpp @@ -34,7 +34,7 @@ * */ -#include "../opentx.h" +#include "../../opentx.h" #if defined(REVX) // TODO change this, not the right place From 0886873f54b89ab1ea02b60cdab724b2feb8103c Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 20 Feb 2015 23:03:26 +0100 Subject: [PATCH 004/100] Fix for the bug projectkk2glider noticed, thanks! --- radio/src/telemetry/telemetry.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 2239661f7..27b85dde7 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -70,10 +70,14 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin if (g_eeGeneral.adjustRTC) { struct gtm t; gettime(&t); - t.tm_hour = datetime.hour; - t.tm_min = datetime.min; - t.tm_sec = datetime.sec; - rtcSetTime(&t); + if (abs((t.tm_hour-datetime.hour)*3600 + (t.tm_min-datetime.min)*60 + (t.tm_sec-datetime.sec)) > 20) { + // we adjust RTC only if difference is > 20 seconds + t.tm_hour = datetime.hour; + t.tm_min = datetime.min; + t.tm_sec = datetime.sec; + g_rtcTime = gmktime(&t); // update local timestamp and get wday calculated + rtcSetTime(&t); + } } } if (datetime.year == 0) { From c44a355573eb37943797fd7449a492605815c6ce Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 20 Feb 2015 23:51:12 +0100 Subject: [PATCH 005/100] Fixes #2056 - Companion part --- companion/src/eeprominterface.h | 4 +- .../src/firmwares/opentx/opentxeeprom.cpp | 7 +- .../src/firmwares/opentx/opentxinterface.cpp | 2 - companion/src/generaledit/generalsetup.cpp | 22 +- companion/src/generaledit/generalsetup.h | 3 +- companion/src/generaledit/generalsetup.ui | 527 +++++++++--------- 6 files changed, 296 insertions(+), 269 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 0684fafd4..1c65c9c5d 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -1095,7 +1095,8 @@ class GeneralSettings { bool enableTelemetryAlarm; BeeperMode hapticMode; unsigned int stickMode; // TODO enum - int timezone; + int timezone; + bool adjustRTC; bool optrexDisplay; unsigned int inactivityTimer; bool minuteBeep; @@ -1246,7 +1247,6 @@ enum Capability { NoTelemetryProtocol, TelemetryCustomScreens, TelemetryCustomScreensFieldsPerLine, - TelemetryTimeshift, TelemetryMaxMultiplier, HasVario, HasVarioSink, diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index e319a9730..a0531d166 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -3157,7 +3157,12 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo internalField.Append(new UnsignedField<2>(generalData.stickMode)); internalField.Append(new SignedField<5>(generalData.timezone)); - internalField.Append(new SpareBitsField<1>()); + if (version >= 217 && IS_TARANIS(board)) { + internalField.Append(new BoolField<1>(generalData.adjustRTC)); + } + else { + internalField.Append(new SpareBitsField<1>()); + } internalField.Append(new UnsignedField<8>(generalData.inactivityTimer)); if (IS_9X(board) && version >= 215) { diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 6d506ca1e..48ad71cb7 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -689,8 +689,6 @@ int OpenTxFirmware::getCapability(const Capability capability) return IS_TARANIS(board) ? 1 : 0; case TelemetryUnits: return 0; - case TelemetryTimeshift: - return 1; case TelemetryMaxMultiplier: return (IS_ARM(board) ? 32 : 8); case PPMCenter: diff --git a/companion/src/generaledit/generalsetup.cpp b/companion/src/generaledit/generalsetup.cpp index 9fcf2e1c0..ddd982e1a 100644 --- a/companion/src/generaledit/generalsetup.cpp +++ b/companion/src/generaledit/generalsetup.cpp @@ -123,17 +123,16 @@ GeneralSetupPanel::GeneralSetupPanel(QWidget * parent, GeneralSettings & general ui->units_CB->setCurrentIndex(generalSettings.imperial); } - if (!firmware->getCapability(TelemetryTimeshift)) { - ui->label_timezone->hide(); - ui->timezoneSB->hide(); - ui->timezoneSB->setDisabled(true); - ui->gpsFormatCB->hide(); - ui->gpsFormatLabel->hide(); - } - ui->gpsFormatCB->setCurrentIndex(generalSettings.gpsFormat); ui->timezoneSB->setValue(generalSettings.timezone); + if (IS_TARANIS(firmware->getBoard())) { + ui->adjustRTC->setChecked(generalSettings.adjustRTC); + } + else { + ui->adjustRTC->hide(); + } + if (!firmware->getCapability(OptrexDisplay)) { ui->label_displayType->hide(); ui->displayTypeCB->setDisabled(true); @@ -533,6 +532,13 @@ void GeneralSetupPanel::on_timezoneSB_editingFinished() emit modified(); } +void GeneralSetupPanel::on_adjustRTC_stateChanged(int) +{ + generalSettings.adjustRTC = ui->adjustRTC->isChecked(); + emit modified(); +} + + void GeneralSetupPanel::on_inactimerSB_editingFinished() { generalSettings.inactivityTimer = ui->inactimerSB->value(); diff --git a/companion/src/generaledit/generalsetup.h b/companion/src/generaledit/generalsetup.h index 3b72b475d..f884d0062 100644 --- a/companion/src/generaledit/generalsetup.h +++ b/companion/src/generaledit/generalsetup.h @@ -19,7 +19,7 @@ class GeneralSetupPanel : public GeneralPanel private slots: void on_splashScreenChkB_stateChanged(int); void on_splashScreenDuration_currentIndexChanged(int index); - void on_alarmwarnChkB_stateChanged(int ); + void on_alarmwarnChkB_stateChanged(int); void on_gpsFormatCB_currentIndexChanged(int index); void on_displayTypeCB_currentIndexChanged(int index); void on_BLBright_SB_editingFinished(); @@ -29,6 +29,7 @@ class GeneralSetupPanel : public GeneralPanel void on_faimode_CB_stateChanged(int ); void on_speakerPitchSB_editingFinished(); void on_timezoneSB_editingFinished(); + void on_adjustRTC_stateChanged(int); void on_hapticStrength_valueChanged(); void on_soundModeCB_currentIndexChanged(int index); void on_beeperlenCB_currentIndexChanged(int index); diff --git a/companion/src/generaledit/generalsetup.ui b/companion/src/generaledit/generalsetup.ui index cd269787a..156464e5c 100644 --- a/companion/src/generaledit/generalsetup.ui +++ b/companion/src/generaledit/generalsetup.ui @@ -6,101 +6,29 @@ 0 0 - 689 - 606 + 758 + 635 Form - + GPS Coordinates - - - - Speaker Pitch (spkr only) - - - - - - - + Measurement Units - - - - - hh° (N/S) mm' ss''.dd - - - - - NMEA - - - - - - - -14 - - - 12 - - - 0 - - - - - - - Voice Language - - - - - - - Timeshift from UTC - - - - - - - - Metric - - - - - Imperial - - - - - - - - Country Code - - - - @@ -119,6 +47,144 @@ + + + + FAI Mode + + + + + + + Country Code + + + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Show splash screen on startup + + + Show splash screen on startup + + + + + + + + + + + 0 + 0 + + + + + --- + + + + + 2s + + + + + 3s + + + + + 4s + + + + + 6s + + + + + 8s + + + + + 10s + + + + + 15s + + + + + + + + + + + hh° (N/S) mm' ss''.dd + + + + + NMEA + + + + + + + + + Metric + + + + + Imperial + + + + + + + + Speaker Pitch (spkr only) + + + + + + + + + + Voice Language + + + @@ -195,6 +261,41 @@ + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + <!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=" text-decoration: underline;">Warnings</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;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These will define startup warnings.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Throttle warning - will alert if the throttle is not at idle during startup</p> +<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> + + + + + + true + + + @@ -247,7 +348,7 @@ - + Qt::Vertical @@ -1278,41 +1379,6 @@ Acceptable values are 5v..10v - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - <!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=" text-decoration: underline;">Warnings</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;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These will define startup warnings.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Throttle warning - will alert if the throttle is not at idle during startup</p> -<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> - - - - - - true - - - @@ -1404,85 +1470,6 @@ p, li { white-space: pre-wrap; } - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Show splash screen on startup - - - Show splash screen on startup - - - - - - - - - - - 0 - 0 - - - - - --- - - - - - 2s - - - - - 3s - - - - - 4s - - - - - 6s - - - - - 8s - - - - - 10s - - - - - 15s - - - - - - @@ -1607,19 +1594,6 @@ p, li { white-space: pre-wrap; } - - - - - 0 - 0 - - - - Stick reverse (order as above) - - - @@ -1633,13 +1607,6 @@ p, li { white-space: pre-wrap; } - - - - FAI Mode - - - @@ -1694,38 +1661,6 @@ Mode 4: - - - - - - 1 - - - - - - - 2 - - - - - - - 3 - - - - - - - 4 - - - - - @@ -1862,17 +1797,7 @@ Mode 4: - - - - If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio. - - - - - - - + @@ -1885,7 +1810,7 @@ Mode 4: - + @@ -1932,6 +1857,98 @@ p, li { white-space: pre-wrap; } + + + + Timeshift from UTC + + + + + + + + + 1 + + + + + + + 2 + + + + + + + 3 + + + + + + + 4 + + + + + + + + + + 0 + 0 + + + + Stick reverse + + + + + + + + + -14 + + + 12 + + + 0 + + + + + + + If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio. + + + Qt::RightToLeft + + + Adjust RTC + + + + + + + + + If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio. + + + + + + From 62ac99b52e06321f731ef9b9bbdc02b2db4001a4 Mon Sep 17 00:00:00 2001 From: martin Date: Tue, 17 Mar 2015 23:13:46 +0100 Subject: [PATCH 006/100] CZ translations --- radio/src/opentx.cpp | 5 +- radio/src/translations/cz.h.txt | 240 +++++++++++++++++++++----------- 2 files changed, 165 insertions(+), 80 deletions(-) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index e05426c0e..26bbee271 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -334,14 +334,15 @@ void defaultInputs() expo->mode = 3; // TODO constant #if defined(TRANSLATIONS_CZ) for (int c=0; c<4; c++) { - g_model.inputNames[i][c] = char2idx(STR_INPUTNAMES[1+STR_INPUTNAMES[0]*(stick_index-1)+c]); + g_model.inputNames[i][c] = char2idx(STR_INPUTNAMES[1+4*(stick_index-1)+c]); } + g_model.inputNames[i][4] = '\0'; #else for (int c=0; c<3; c++) { g_model.inputNames[i][c] = char2idx(STR_VSRCRAW[2+4*stick_index+c]); -#endif } g_model.inputNames[i][3] = '\0'; +#endif } eeDirty(EE_MODEL); } diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 76eef770b..493015f33 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -82,9 +82,15 @@ #define LEN_UART3MODES "\015" #define TR_UART3MODES "VYP\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Trainer\0""Debug\0" +#define LEN_SWTYPES "\006" +#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0" + #define LEN_POTTYPES "\017" #define TR_POTTYPES "Není\0 ""Pot s aretací\0 ""Vícepol. přep.\0""Potenciometr\0" +#define LEN_SLIDERTYPES "\006" +#define TR_SLIDERTYPES "žádný\0""Slider" + #define LEN_DATETIME "\006" #define TR_DATETIME "DATUM:""ČAS: " @@ -109,15 +115,20 @@ #define LEN_VTRIMINC "\007" #define TR_VTRIMINC "Expo\0 ""ExJemný""Jemný\0 ""Střední""Hrubý\0 " +#define LEN_VDISPLAYTRIMS "\006" +#define TR_VDISPLAYTRIMS "Ne\0 ""Změna\0""Ano\0 " + #define LEN_VBEEPCOUNTDOWN "\006" -#define TR_VBEEPCOUNTDOWN "Tichý\0""Zvuk\0 ""Hlas\0 " +#define TR_VBEEPCOUNTDOWN "Ne\0 ""Zvuk\0 ""Hlas\0 " #define LEN_CURVE_TYPES "\010" #define TR_CURVE_TYPES "Rastr-X\0""Volná-XY" #define LEN_RETA123 "\001" -#if defined(PCBTARANIS) || defined(REVX) +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_RETA123 "SVPK1234LRLR" +#elif defined(PCBTARANIS) || defined(REVX) #define TR_RETA123 "SVPK123LR" #elif defined(PCBSKY9X) #define TR_RETA123 "SVPK123a" @@ -174,7 +185,7 @@ #define LEN_VMIXTRIMS "\004" #define TR_VMIXTRIMS "VYP\0""ZAP\0""Směr""Výšk""Plyn""Křid" -#if defined(PCBTARANIS) +#if LCD_W >= 212 #define TR_CSWTIMER "Timer" #define TR_CSWSTICKY "Stcky" #define TR_CSWRANGE "Range" @@ -230,18 +241,18 @@ #else #define TR_PLAY_TRACK "\221\222Stopa\0 " #endif - #define TR_PLAY_BOTH "\221\222Pár\0 " - #define TR_PLAY_VALUE "\221\222TTS\0 " + #define TR_PLAY_BOTH "\221\222Pár stop\0" + #define TR_PLAY_VALUE "\221\222Hlásit\0 " #else #define TR_PLAY_TRACK "[\221\222Stopa]\0 " #define TR_PLAY_BOTH "[\221\222Pár]\0 " - #define TR_PLAY_VALUE "[\221\222TTS]\0 " + #define TR_PLAY_VALUE "[\221\222Hlásit]\0" #endif -#define TR_SF_BG_MUSIC "BgHudba\0 ""BgHudba ||\0" +#define TR_SF_BG_MUSIC "\221\222Hudba\0 ""\221\222Hudba ||\0" #if defined(SDCARD) - #define TR_SDCLOGS "Log na SD\0 " + #define TR_SDCLOGS "Loguj na SD" #else #define TR_SDCLOGS "[Logování]\0" #endif @@ -249,7 +260,7 @@ #ifdef GVARS #define TR_ADJUST_GVAR "Nastav \0 " #else - #define TR_ADJUST_GVAR "[AdjustGV]\0" + #define TR_ADJUST_GVAR "[Nastav GP]" #endif #if defined(LUA) @@ -302,8 +313,8 @@ #define TR_FSW_RESET_ROTENC #endif -#if defined(PCBTARANIS) - #define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 " +#if LCD_W >= 212 + #define TR_FSW_RESET_TIMERS "Stopky 1\0 ""Stopky 2\0 ""Stopky 3\0 " #elif defined(CPUARM) #define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3" #else @@ -335,10 +346,10 @@ #define TR_ASPD_MAX TR("ASp+", "ASpd+") -#if defined(PCBTARANIS) +#if LCD_W >= 212 #define TR_TELEM_RSSI_RX "RSSI\0" #else - #define TR_TELEM_RSSI_RX TR("Rx\0 ", "Rx\0 ") + #define TR_TELEM_RSSI_RX TR("Rx\0 ", "Rx\0 ") #endif #if defined(CPUARM) @@ -361,10 +372,8 @@ #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metr.\0""Imper.", "Metrické""Imperial") - #define LEN_VTELEMUNIT_METR "\003" - #define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " - #define LEN_VTELEMUNIT_IMP "\003" - #define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT "\003" + #define TR_VTELEMUNIT "-\0 ""v\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0" #else #if defined(IMPERIAL_UNITS) #define LENGTH_UNIT LENGTH_UNIT_IMP @@ -390,24 +399,29 @@ #define TR_VTELPROTO "---\0 ""Hub\0 ""WSHHigh" #if defined(CPUARM) - #define LEN_AMPSRC TR("\003", "\007") - #define TR_AMPSRC TR("---""A1\0""A2\0""A3\0""A4\0""FAS""Cel", "---\0 ""A1\0 ""A2\0 ""A3\0 ""A4\0 ""FAS\0 ""Cells\0 ") - #define LEN_VOLTSRC TR("\003", "\007") - #define TR_VOLTSRC TR("A1\0""A2\0""A3\0""A4\0""FAS""Cel", "A1\0 ""A2\0 ""A3\0 ""A4\0 ""FAS\0 ""Cells\0 ") + #define LEN_AMPSRC TR("\003", "\005") + #define TR_AMPSRC TR("---""A1\0""A2\0""A3\0""A4\0""FAS""Cel", "---\0 ""A1\0 ""A2\0 ""A3\0 ""A4\0 ""FAS\0 ""Cells") + #define LEN_VOLTSRC TR("\003", "\005") + #define TR_VOLTSRC TR("A1\0""A2\0""A3\0""A4\0""FAS""Cel", "A1\0 ""A2\0 ""A3\0 ""A4\0 ""FAS\0 ""Cells") #else - #define LEN_AMPSRC TR("\003", "\007") - #define TR_AMPSRC TR("---""A1\0""A2\0""FAS""Cel", "---\0 ""A1\0 ""A2\0 ""FAS\0 ""Cells\0 ") + #define LEN_AMPSRC TR("\003", "\005") + #define TR_AMPSRC TR("---""A1\0""A2\0""FAS""Cel", "---\0 ""A1\0 ""A2\0 ""FAS\0 ""Cells") #endif -#define LEN_VARIOSRC "\005" +#define LEN_VARIOSRC "\004" #if defined(FRSKY_SPORT) - #define TR_VARIOSRC "Vario""A1\0 ""A2\0" + #define TR_VARIOSRC "VSpd""A1\0 ""A2\0 ""dTE\0" #else - #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" + #define TR_VARIOSRC "Alt\0""Alt+""VSpd""A1\0 ""A2\0" #endif +#if defined(CPUARM) +#define LEN_VTELEMSCREENTYPE "\010" +#define TR_VTELEMSCREENTYPE "Hodnota ""Ukazatel""Skript\0" +#else #define LEN_VTELEMSCREENTYPE "\010" #define TR_VTELEMSCREENTYPE "Hodnota ""Ukazatel" +#endif #define LEN_GPSFORMAT "\004" #define TR_GPSFORMAT "DMS\0""NMEA" @@ -428,22 +442,31 @@ #define LEN_VSWITCHES "\003" #define LEN_VSRCRAW "\004" -#if defined(PCBTARANIS) - #define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""S3\0 ""LS\0 ""RS\0 " - #define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 " +#define LEN_INPUTNAMES "\004" +#define TR_INPUTNAMES "Smer""Vysk""Plyn""Krid" + +#define TR_STICKS_VSRCRAW TR("Směr""Výšk""Plyn""Křid", "\307Smě""\307Výš""\307Pln""\307Kři") +#define TR_TRIMS_VSRCRAW TR("TrmS""TrmV""TrmP""TrmK", "\313Smě""\313Výš""\313Pln""\313Kři") + +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0""\310S3\0""\310S4\0""\311LS\0""\311RS\0""\311LS2""\311RS2" + #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0""\312SI\0""\312SJ\0""\312SK\0""\312SL\0""\312SM\0""\312SN\0""\312SO\0""\312SP\0""\312SQ\0""\312SR\0" +#elif defined(PCBTARANIS) + #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0""\310S3\0""\311LS\0""\311RS\0" + #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0" #else - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " + #define TR_POTS_VSRCRAW "POT1""POT2""POT3" #define TR_SW_VSRCRAW "3POS" #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" #endif #if defined(CPUARM) - #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12""L13""L14""L15""L16""L17""L18""L19""L20""L21""L22""L23""L24""L25""L26""L27""L28""L29""L30""L31""L32" + #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12""L13""L14""L15""L16""L17""L18""L19""L20""L21""L22""L23""L24""L25""L26""L27""L28""L29""L30""L31""L32" #else - #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" + #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "tSl""tSp""tVd""tVn""tPd""tPn""tKl""tKp" +#define TR_TRIMS_SWITCHES "\313Sl""\313Sp""\313Vd""\313Vn""\313Pd""\313Pn""\313Kl""\313Kp" #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "REa\0" @@ -456,13 +479,23 @@ #define TR_ROTENC_SWITCHES #endif -#if defined(PCBTARANIS) - #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" - #define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ZAP""One" -#elif defined(CPUARM) - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ZAP""One" +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" +#elif defined(PCBTARANIS) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" #else - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ZAP""One" + #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" +#endif + +#if defined(PCBTARANIS) + #if defined(REV9E) + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46" + #else + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" + #endif + #define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ZAP""One" +#else + #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ZAP""One" #endif #if defined(HELI) @@ -471,13 +504,17 @@ #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" #endif -#define TR_VSRCRAW "---\0""Směr""Výšk""Plyn""Křid" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS "MAX\0" TR_CYC_VSRCRAW "TrmS" "TrmV" "TrmP" "TrmK" TR_SW_VSRCRAW +#if defined(CPUARM) + #define TR_RESERVE_VSRCRAW "[--]" + #define TR_EXTRA_VSRCRAW "Batt""Time" TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW "Tmr1""Tmr2""Tmr3" +#else + #define TR_EXTRA_VSRCRAW +#endif -#define LEN_INPUTNAMES "\004" -#define TR_INPUTNAMES "Smer""Vysk""Plyn""Krid" +#define TR_VSRCRAW "---\0" TR_STICKS_VSRCRAW TR_POTS_VSRCRAW TR_ROTARY_ENCODERS "MAX\0" TR_CYC_VSRCRAW TR_TRIMS_VSRCRAW TR_SW_VSRCRAW TR_EXTRA_VSRCRAW #define LEN_VTMRMODES "\004" -#define TR_VTMRMODES "VYP\0""ABS\0""Pln>""Pln%""Pln*" +#define TR_VTMRMODES "VYP\0""ZAP\0""Pln>""Pln%""Pln*" #define LEN_VTRAINERMODES "\022" #define TR_VTRAINERMODES "Učitel/Jack\0 ""Žák/Jack\0 ""Master/SBUS Module""Master/CPPM Module""Master/Battery\0" @@ -495,9 +532,17 @@ #endif // ZERO TERMINATED STRINGS +#if defined(COLORLCD) + #define INDENT "\007" + #define LEN_INDENT 1 + #define INDENT_WIDTH 12 + #define BREAKSPACE "\036" +#else #define INDENT "\001" #define LEN_INDENT 1 #define INDENT_WIDTH (FW/2) +#define BREAKSPACE " " +#endif #if defined(PCBTARANIS) #define TR_ENTER "[ENTER]" @@ -516,7 +561,7 @@ #define TR_MENUWHENDONE CENTER "\011" TR_ENTER " > DALŠÍ" #define TR_FREE TR("volné:", "volných") -#define TR_DELETEMODEL "SMAZAT MODEL" +#define TR_DELETEMODEL "SMAZAT" BREAKSPACE "MODEL" #define TR_COPYINGMODEL "Kopíruji model.." #define TR_MOVINGMODEL "Přesouvám model." #define TR_LOADINGMODEL "Aktivuji model.." @@ -525,7 +570,7 @@ #define TR_PHASENAME "Název" #define TR_MIXNAME "Název" #define TR_INPUTNAME "Název" -#if defined(PCBTARANIS) +#if defined(VIRTUALINPUTS) #define TR_EXPONAME "Popis" #else #define TR_EXPONAME "Název" @@ -535,13 +580,17 @@ #define TR_ELIMITS TR("Limit +25%", "Kanál +/- 125%") #define TR_ETRIMS TR("širší Trim", "Široký trim") #define TR_TRIMINC TR("Krok Trimu", "Krok trimu") -#define TR_DISPLAY_TRIMS "Display Trims" +#define TR_DISPLAY_TRIMS "Zobr.hodnotu trimu" #define TR_TTRACE TR("StopaPlynu", INDENT "Stopa plynu") #define TR_TTRIM TR("TrimVolnob.", INDENT "Trim jen volnoběh") -#define TR_BEEPCTR "Středy \221\222" +#define TR_BEEPCTR TR("Středy \221\222", "Pípat středy \221\222") #define TR_USE_GLOBAL_FUNCS "Use Global Funcs" #define TR_PROTO INDENT "Protokol" +#if defined(CPUARM) #define TR_PPMFRAME INDENT "PPM frame" +#else + #define TR_PPMFRAME "PPM frame" +#endif #define TR_MS "ms" #define TR_SWITCH "Spínač" #define TR_TRIMS "Trimy" @@ -552,8 +601,8 @@ #define OFS_CHECKTRIMS (9*FW) #define TR_SWASHTYPE "Typ cykliky" #define TR_COLLECTIVE "Kolektiv" -#define TR_AILERON "Aileron Source" -#define TR_ELEVATOR "Elevator Source" +#define TR_AILERON "Boční cyklika" +#define TR_ELEVATOR "Podélná cykl." #define TR_SWASHRING "Cyklika" #define TR_ELEDIRECTION "Směr:Výškovka" #define TR_AILDIRECTION "\012Křidélka" @@ -617,8 +666,8 @@ #define TR_BLOFFBRIGHTNESS INDENT"Jas Vyp." #define TR_BLCOLOR INDENT "Barva" #define TR_SPLASHSCREEN TR("úvodníLogo", "Zobrazit úvodní logo") -#define TR_THROTTLEWARNING TR("* Plyn", INDENT "Páka Plynu") -#define TR_SWITCHWARNING TR("* Spínače", INDENT "Polohy Spínačů") +#define TR_THROTTLEWARNING TR("* Plyn", INDENT "Kontrola plynu") +#define TR_SWITCHWARNING TR("* Spínače", INDENT "Polohy spínačů") #define TR_POTWARNING TR("* Potenc.", INDENT "Nastavení Pot.") #define TR_TIMEZONE "časové pásmo" #define TR_RXCHANNELORD TR("Pořadí kanálů", "Výchozí pořadí kanálů") @@ -632,9 +681,15 @@ #define TR_CAL "Kal." #define TR_VTRIM "Trim- +" #define TR_BG "BG:" -#define TR_MENUTOSTART CENTER "\011" TR_ENTER " = START" -#define TR_SETMIDPOINT CENTER "\004Nastav páky na střed" -#define TR_MOVESTICKSPOTS TR(CENTER "\006Hýbej pákami/poty", "\014Hýbej pákami i potenciometry") +#if defined(COLORLCD) + #define TR_MENUTOSTART TR_ENTER " = START" + #define TR_SETMIDPOINT "Nastav páky na střed" + #define TR_MOVESTICKSPOTS "Hýbej pákami/poty" +#else + #define TR_MENUTOSTART CENTER "\011" TR_ENTER " = START" + #define TR_SETMIDPOINT CENTER "\004Nastav páky na střed" + #define TR_MOVESTICKSPOTS TR(CENTER "\006Hýbej pákami/poty", "\014Hýbej pákami i potenciometry") +#endif #define TR_RXBATT "Rx Bat.:" #define TR_TXnRX "Tx:\0Rx:" #define OFS_RX 4 @@ -677,7 +732,11 @@ #define TR_MENUDIAG "DIAG" #define TR_MENUANA "ANALOGY" #define TR_MENUCALIBRATION "KALIBRACE" +#if defined(COLORLCD) #define TR_TRIMS2OFFSETS "\006Trimy => Subtrimy" +#else +#define TR_TRIMS2OFFSETS "\006Trimy => Subtrimy" +#endif #define TR_MENUMODELSEL "MODEL" #define TR_MENUSETUP "NASTAVENÍ" #define TR_MENUFLIGHTPHASE "LETOVÝ REŽIM" @@ -686,15 +745,12 @@ #define TR_MENULIMITS "SERVA" -#if defined(PCBTARANIS) +#if defined(VIRTUALINPUTS) #define TR_MENUINPUTS "VSTUPY" #else #define TR_MENUINPUTS "DR/EXPO" #endif - - - #define TR_MENUCURVES "KŘIVKY" #define TR_MENUCURVE "\002K" #define TR_MENULOGICALSWITCH "LOG. SPÍNAč" @@ -706,8 +762,12 @@ #define TR_MENUTEMPLATES "ŠABLONY" #define TR_MENUSTAT "STATISTIKA" #define TR_MENUDEBUG "DIAG" -#define TR_RXNUM INDENT "Přijímač" -#define TR_SYNCMENU "Sync [MENU]" +#if defined(CPUARM) + #define TR_RXNUM TR(INDENT "RX číslo", INDENT "Číslo přijímače") +#else + #define TR_RXNUM "RX číslo" +#endif +#define TR_SYNCMENU "[Sync]" #define TR_LIMIT INDENT"Limit" #define TR_MINRSSI "Min Rssi" #define TR_LATITUDE "Zem. šířka" @@ -717,8 +777,8 @@ #define TR_PITCH_AT_ZERO INDENT "Tón na nule" #define TR_PITCH_AT_MAX INDENT "Tón na maximu" #define TR_REPEAT_AT_ZERO INDENT "Opakování na nule" -#define TR_SHUTDOWN "VYPÍNÁNí.." -#define TR_SAVEMODEL "Saving model settings" +#define TR_SHUTDOWN "Vypínání.." +#define TR_SAVEMODEL "Ukládám nastavení modelu" #define TR_BATT_CALIB "Kalib. baterie" #define TR_CURRENT_CALIB " +=\006Proud" #define TR_VOLTAGE INDENT"Napětí" @@ -732,7 +792,7 @@ #define TR_RESTORE_MODEL "Obnov model z SD" #define TR_SDCARD_ERROR "Chyba SD karty" #define TR_NO_SDCARD "Není SD karta" -#define TR_SDCARD_FULL "SD Card Full" +#define TR_SDCARD_FULL "Plná SD karta" #define TR_INCOMPATIBLE "Nekompatibilní" #define TR_WARNING "KONTROLA" #define TR_EEPROMWARN "EEPROM" @@ -740,7 +800,7 @@ #define TR_THROTTLEWARN "PLYNU" #define TR_ALARMSWARN "ALARMU" #define TR_SWITCHWARN "POZICE" -#define TR_KEYSTUCK "Key stuck" +#define TR_KEYSTUCK "Zaseklá klávesa" #define TR_INVERT_THR "Invertovat plyn?" #define TR_SPEAKER_VOLUME INDENT "Hlasitost" #define TR_LCD "LCD" @@ -750,8 +810,8 @@ #define TR_CPU_MAH "Spotřeba" #define TR_COPROC "CoProc." #define TR_COPROC_TEMP "Tepl. MB \016>" -#define TR_CAPAWARNING INDENT "Kapacita" -#define TR_TEMPWARNING INDENT "Teplota" +#define TR_CAPAWARNING INDENT "Nízká kapacita" +#define TR_TEMPWARNING INDENT "Přehřátí" #define TR_FUNC "Fce." #define TR_V1 "V1" #define TR_V2 "V2" @@ -759,10 +819,10 @@ #define TR_DELAY "Zdržet" #define TR_SD_CARD "SD" #define TR_SDHC_CARD "SD-HC" -#define TR_NO_SOUNDS_ON_SD "žádný zvuk na SD" -#define TR_NO_MODELS_ON_SD "žádný model na SD" -#define TR_NO_BITMAPS_ON_SD "žádné obrázky na SD" -#define TR_NO_SCRIPTS_ON_SD "žádný skript na SD" +#define TR_NO_SOUNDS_ON_SD "žádný zvuk" BREAKSPACE "na SD" +#define TR_NO_MODELS_ON_SD "žádný model" BREAKSPACE "na SD" +#define TR_NO_BITMAPS_ON_SD "žádné obrázky" BREAKSPACE "na SD" +#define TR_NO_SCRIPTS_ON_SD "žádný skript" BREAKSPACE "na SD" #define TR_PLAY_FILE "Přehrát" #define TR_DELETE_FILE "Odstranit" #define TR_COPY_FILE "Kopírovat" @@ -792,17 +852,19 @@ #define TR_DATE "Datum" #define TR_ROTARY_ENCODER "R.Encs" #define TR_CHANNELS_MONITOR "MONITOR KANÁLU" -#define TR_MIXERS_MONITOR "MIXERS MONITOR" +#define TR_MIXERS_MONITOR "MONITOR MIXU" #define TR_PATH_TOO_LONG "Cesta je moc dlouhá" #define TR_VIEW_TEXT "Zobrazit text" -#define TR_FLASH_BOOTLOADER "Flash BootLoader" -#define TR_WRITING "\032Writing..." -#define TR_CONFIRM_FORMAT "Confirm Format?" +#define TR_FLASH_BOOTLOADER "Flash BootLoaderu" +#define TR_FLASH_EXTERNAL_DEVICE "Flash externí krabičky" +#define TR_FLASH_INTERNAL_MODULE "Flash vnitřního modulu" +#define TR_WRITING "\032Zapisuji.." +#define TR_CONFIRM_FORMAT "Provést Formát?" #define TR_INTERNALRF "Vnitřní RF modul" #define TR_EXTERNALRF "Externí RF modul" #define TR_FAILSAFE "Mód Failsafe" #define TR_FAILSAFESET "NASTAVENÍ FAILSAFE" -#define TR_MENUSENSOR "SENSOR" +#define TR_MENUSENSOR "SENZOR" #define TR_COUNTRYCODE "Kód regionu" #define TR_VOICELANG "Jazyk hlasu" #define TR_UNITSSYSTEM "Jednotky" @@ -836,8 +898,8 @@ #define TR_MODELIDUSED TR("ID již použito","ID modelu je již použito") #define TR_MODULE INDENT "Modul" #define TR_TELEMETRY_TYPE TR("Typ", "Typ telemetrie") -#define TR_TELEMETRY_SENSORS "Sensors" -#define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." +#define TR_TELEMETRY_SENSORS "Senzory" +#define TR_TELEMETRY_NEWSENSOR INDENT "+ Přidat nový senzor.." #define TR_CHANNELRANGE INDENT "Rozsah kanálů" #define TR_LOWALARM INDENT "Nízký Alarm" #define TR_CRITICALALARM INDENT "Kritický Alarm" @@ -968,4 +1030,26 @@ #define TR_MODS_FORBIDDEN "Změny nejsou povoleny!" #define TR_UNLOCKED "Odemčeno" #define TR_ID "ID" -#define TR_PRECISION "Precision" +#define TR_PRECISION "Přesnost" + +#define ZSTR_RSSI "RSSI" +#define ZSTR_A1 "A1" +#define ZSTR_A2 "A2" +#define ZSTR_BATT "Batt" +#define ZSTR_ALT "Alt" +#define ZSTR_TEMP "Temp" +#define ZSTR_RPM "RPM" +#define ZSTR_FUEL "Fuel" +#define ZSTR_VSPD "VSpd" +#define ZSTR_ACCX "AccX" +#define ZSTR_ACCY "AccY" +#define ZSTR_ACCZ "AccZ" +#define ZSTR_CURR "Curr" +#define ZSTR_VFAS "VFAS" +#define ZSTR_ASPD "ASpd" +#define ZSTR_GSPD "GSpd" +#define ZSTR_HDG "Hdg" +#define ZSTR_CELLS "Cels" +#define ZSTR_GPSALT "GAlt" +#define ZSTR_GPSDATETIME "Date" +#define ZSTR_GPS "GPS" From ce2a278862a37fed97d45e3326c02e27c3ae2cad Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 18 Mar 2015 20:14:27 +0400 Subject: [PATCH 007/100] GVAR names not available for 9x in companion (Fix #2150) --- companion/src/firmwares/opentx/opentxinterface.cpp | 2 +- companion/src/modeledit/flightmodes.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 6d506ca1e..dae14d582 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -551,7 +551,7 @@ int OpenTxFirmware::getCapability(const Capability capability) case FlightModesName: return (IS_TARANIS(board) ? 10 : 6); case GvarsName: - return 6; + return (IS_9X(board) ? 0 : 6); case HasChNames: return (IS_TARANIS(board) ? 1 : 0); case GvarsInCS: diff --git a/companion/src/modeledit/flightmodes.cpp b/companion/src/modeledit/flightmodes.cpp index 3218b6105..3fba520c5 100644 --- a/companion/src/modeledit/flightmodes.cpp +++ b/companion/src/modeledit/flightmodes.cpp @@ -209,7 +209,9 @@ void FlightModePanel::update() if (ui->gvGB->isVisible()) { for (int i=0; isetText(model->gvars_names[i]); + if (firmware->getCapability(GvarsName) > 0) { + gvNames[i]->setText(model->gvars_names[i]); + } gvValues[i]->setDisabled(model->isGVarLinked(phaseIdx, i)); gvValues[i]->setValue(model->getGVarValue(phaseIdx, i)); if (IS_TARANIS(GetEepromInterface()->getBoard()) && phaseIdx == 0) { From 827e1e2b43fa271e19637579a4fab4c8a118018b Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 11 Mar 2015 19:14:12 +0400 Subject: [PATCH 008/100] Factory reset function (manual EEPROM format) --- radio/src/eeprom_common.h | 1 + radio/src/eeprom_rlc.cpp | 29 ++++++++++--------- .../src/gui/Taranis/menu_general_version.cpp | 13 ++++++++- radio/src/translations.cpp | 2 ++ radio/src/translations.h | 2 ++ radio/src/translations/cz.h.txt | 2 ++ radio/src/translations/de.h.txt | 2 ++ radio/src/translations/en.h.txt | 2 ++ radio/src/translations/es.h.txt | 2 ++ radio/src/translations/fi.h.txt | 4 ++- radio/src/translations/fr.h.txt | 2 ++ radio/src/translations/it.h.txt | 2 ++ radio/src/translations/pl.h.txt | 2 ++ radio/src/translations/pt.h.txt | 2 ++ radio/src/translations/se.h.txt | 2 ++ 15 files changed, 54 insertions(+), 15 deletions(-) diff --git a/radio/src/eeprom_common.h b/radio/src/eeprom_common.h index 9f0b36433..ffb1c74e9 100644 --- a/radio/src/eeprom_common.h +++ b/radio/src/eeprom_common.h @@ -58,6 +58,7 @@ bool eeModelExists(uint8_t id); void eeLoadModelName(uint8_t id, char *name); void eeLoadModel(uint8_t id); bool eeConvert(); +void eeErase(bool warn); void ConvertModel(int id, int version); uint8_t eeFindEmptyModel(uint8_t id, bool down); void selectModel(uint8_t sub); diff --git a/radio/src/eeprom_rlc.cpp b/radio/src/eeprom_rlc.cpp index 2887d1fc4..af85d5810 100644 --- a/radio/src/eeprom_rlc.cpp +++ b/radio/src/eeprom_rlc.cpp @@ -1016,6 +1016,21 @@ void eeLoadModel(uint8_t id) } } +void eeErase(bool warn) +{ + generalDefault(); + + if (warn) { + ALERT(STR_EEPROMWARN, STR_BADEEPROMDATA, AU_BAD_EEPROM); + } + + MESSAGE(STR_EEPROMWARN, STR_EEPROMFORMATTING, NULL, AU_EEPROM_FORMATTING); + EeFsFormat(); + theFile.writeRlc(FILE_GENERAL, FILE_TYP_GENERAL, (uint8_t*)&g_eeGeneral, sizeof(EEGeneral), true); + modelDefault(0); + theFile.writeRlc(FILE_MODEL(0), FILE_TYP_MODEL, (uint8_t*)&g_model, sizeof(g_model), true); +} + // TODO merge this code with eeprom_arm.cpp one void eeReadAll() { @@ -1023,19 +1038,7 @@ void eeReadAll() EeFsck() < 0 || !eeLoadGeneral()) { - generalDefault(); - - ALERT(STR_EEPROMWARN, STR_BADEEPROMDATA, AU_BAD_EEPROM); - - MESSAGE(STR_EEPROMWARN, STR_EEPROMFORMATTING, NULL, AU_EEPROM_FORMATTING); - - EeFsFormat(); - - theFile.writeRlc(FILE_GENERAL, FILE_TYP_GENERAL, (uint8_t*)&g_eeGeneral, sizeof(EEGeneral), true); - - modelDefault(0); - - theFile.writeRlc(FILE_MODEL(0), FILE_TYP_MODEL, (uint8_t*)&g_model, sizeof(g_model), true); + eeErase(true); } else { eeLoadModelHeaders(); diff --git a/radio/src/gui/Taranis/menu_general_version.cpp b/radio/src/gui/Taranis/menu_general_version.cpp index 2248b40d7..fe2bfca2d 100755 --- a/radio/src/gui/Taranis/menu_general_version.cpp +++ b/radio/src/gui/Taranis/menu_general_version.cpp @@ -88,12 +88,23 @@ void backupEeprom() void menuGeneralVersion(uint8_t event) { + if (s_warning_result) { + s_warning_result = 0; + displayPopup(STR_EEPROMFORMATTING); + eeErase(false); + NVIC_SystemReset(); + } + SIMPLE_MENU(STR_MENUVERSION, menuTabGeneral, e_Vers, 1); lcd_putsLeft(MENU_HEADER_HEIGHT+FH, vers_stamp); - lcd_putsLeft(MENU_HEADER_HEIGHT+6*FH, STR_EEBACKUP); + lcd_putsLeft(MENU_HEADER_HEIGHT+5*FH, STR_EEBACKUP); + lcd_putsLeft(MENU_HEADER_HEIGHT+6*FH, STR_FACTORYRESET); if (event == EVT_KEY_LONG(KEY_ENTER)) { backupEeprom(); } + else if (event == EVT_KEY_LONG(KEY_MENU)) { + POPUP_CONFIRMATION(STR_CONFIRMRESET); + } } diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 48ce9ee21..2e1b445f0 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -499,6 +499,8 @@ const pm_char STR_FLASH_EXTERNAL_DEVICE[] PROGMEM = TR_FLASH_EXTERNAL_DEVICE; const pm_char STR_WRITING[] PROGMEM = TR_WRITING; const pm_char STR_CONFIRM_FORMAT[] PROGMEM = TR_CONFIRM_FORMAT; const pm_char STR_EEBACKUP[] PROGMEM = TR_EEBACKUP; +const pm_char STR_FACTORYRESET[] PROGMEM = TR_FACTORYRESET; +const pm_char STR_CONFIRMRESET[] PROGMEM = TR_CONFIRMRESET; const pm_char STR_TOO_MANY_LUA_SCRIPTS[] PROGMEM = TR_TO_MANY_LUA_SCRIPTS; const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR; diff --git a/radio/src/translations.h b/radio/src/translations.h index 8f9cdbcda..0c180c29c 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -669,6 +669,8 @@ extern const pm_char STR_FLASH_INTERNAL_MODULE[]; extern const pm_char STR_WRITING[]; extern const pm_char STR_CONFIRM_FORMAT[]; extern const pm_char STR_EEBACKUP[]; +extern const pm_char STR_FACTORYRESET[]; +extern const pm_char STR_CONFIRMRESET[]; extern const pm_char STR_TOO_MANY_LUA_SCRIPTS[]; extern const pm_char STR_BLCOLOR[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 493015f33..01eb0cb1b 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -926,6 +926,8 @@ #define TR_INPUTS "Vstupy" #define TR_OUTPUTS "Výstupy" #define TR_EEBACKUP "\010[dlouze ENTER] zálohuje EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Příliš mnoho skriptů!" #if defined(MAVLINK) diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index b47d7ab97..746ace09b 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -925,6 +925,8 @@ #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\002[ENTER Long] Backup EEPROM->SD-Karte" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Zu viele Lua-Scripten!!" #if defined(MAVLINK) diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 4d403c78d..d0ab60f95 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -925,6 +925,8 @@ #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" #if defined(MAVLINK) diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index de3d0fb45..9d4b0d24c 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -861,6 +861,8 @@ #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" #if defined(MAVLINK) diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 3cc4f2746..939ba26fa 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1,4 +1,4 @@ -/* +/* * Authors (alphabetical order) * - Bertrand Songis * - Bernet Andre @@ -861,6 +861,8 @@ #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" #if defined(MAVLINK) diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 4ad9984f3..48494beac 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -921,6 +921,8 @@ #define TR_INPUTS "Entrées" #define TR_OUTPUTS "Sorties" #define TR_EEBACKUP "\004[ENTER Long]: Sauvegarder l'EEPROM" +#define TR_FACTORYRESET "\016[MENU Long]: RAZ d'usine" +#define TR_CONFIRMRESET "Effacer TOUS modèles/réglages?" #define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" #if defined(MAVLINK) diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index f310e17ee..25349d34d 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -861,6 +861,8 @@ #define TR_INPUTS "Ingresso" #define TR_OUTPUTS "Uscita" #define TR_EEBACKUP "\004[ENTER Lungo] per copiare la EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Troppi Scripts Lua!" #if defined(MAVLINK) diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a45e0c107..b5ddf9060 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -859,6 +859,8 @@ #define TR_INPUTS "Wejścia" #define TR_OUTPUTS "Wyjścia" #define TR_EEBACKUP "\004[ENTER Długo] Backupowanie EEPROMu" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Za dużo skryptów Lua!" #if defined(MAVLINK) diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 0e10202e9..b14b60d85 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -861,6 +861,8 @@ #define TR_INPUTS "Inputs" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!" #if defined(MAVLINK) diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index c235ae993..1a550134e 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -861,6 +861,8 @@ #define TR_INPUTS "Input" #define TR_OUTPUTS "Outputs" #define TR_EEBACKUP "\004[ENTER Lång] säkerhetskopiera EEPROM" +#define TR_FACTORYRESET "\012[MENU Long]: Factory reset" +#define TR_CONFIRMRESET "Erase ALL models and settings?" #define TR_TO_MANY_LUA_SCRIPTS "För många Lua-scripts!" #if defined(MAVLINK) From 5442cc917bedb73fdca25de69dd228e9cc81eea7 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 18 Mar 2015 21:04:33 +0400 Subject: [PATCH 009/100] SWR added to preset sensors --- radio/src/telemetry/frsky_sport.cpp | 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/fr.h.txt | 1 + radio/src/translations/pl.h.txt | 1 + 6 files changed, 6 insertions(+) diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index b1cb34933..c923f589c 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -58,6 +58,7 @@ struct FrSkySportSensor { const FrSkySportSensor sportSensors[] = { { RSSI_ID, RSSI_ID, ZSTR_RSSI, UNIT_RAW, 0 }, + { SWR_ID, SWR_ID, ZSTR_SWR, UNIT_RAW, 0 }, { ADC1_ID, ADC1_ID, ZSTR_A1, UNIT_VOLTS, 0 }, { ADC2_ID, ADC2_ID, ZSTR_A2, UNIT_VOLTS, 0 }, { BATT_ID, BATT_ID, ZSTR_BATT, UNIT_VOLTS, 0 }, diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 493015f33..d90b6ef21 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1033,6 +1033,7 @@ #define TR_PRECISION "Přesnost" #define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" #define ZSTR_BATT "Batt" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index b47d7ab97..ff42ded89 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1032,6 +1032,7 @@ #define TR_PRECISION "Prezision" #define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" #define ZSTR_BATT "Batt" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 4d403c78d..488935333 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1032,6 +1032,7 @@ #define TR_PRECISION "Precision" #define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" #define ZSTR_BATT "Batt" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 4ad9984f3..c652e38c6 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1028,6 +1028,7 @@ #define TR_PRECISION "Precision" #define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" #define ZSTR_BATT "Batt" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a45e0c107..675373979 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -966,6 +966,7 @@ #define TR_PRECISION "Precyzja " #define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" #define ZSTR_BATT "Bat." From 927515869428421ebc274bf7d901d974e624e045 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 18 Mar 2015 21:06:17 +0400 Subject: [PATCH 010/100] SWR present in simu (Fix #2146) --- radio/src/telemetry/frsky.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index eac2b461b..3f7294ec0 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -567,6 +567,7 @@ void telemetryReset() #if defined(CPUARM) && defined(SIMU) setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, RSSI_ID, 0, 75, UNIT_RAW, 0); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, SWR_ID, 0, 5, UNIT_RAW, 0); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID, 0, 100, UNIT_CELSIUS, 0); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID, 1, 200, UNIT_CELSIUS, 0); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, ALT_FIRST_ID, 1, 1000, UNIT_METERS, 2); From 4e1f04fa0489da8e3297965c6ffe7c96cd38f30f Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 16 Mar 2015 20:27:30 +0100 Subject: [PATCH 011/100] Fixes #2144 - Needs tests --- radio/src/gui/9X/view_telemetry.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/9X/view_telemetry.cpp b/radio/src/gui/9X/view_telemetry.cpp index 79df6265b..bc78cd932 100755 --- a/radio/src/gui/9X/view_telemetry.cpp +++ b/radio/src/gui/9X/view_telemetry.cpp @@ -95,9 +95,9 @@ void displayGpsCoord(uint8_t y, char direction, int16_t bp, int16_t ap) lcd_outdezNAtt(lcdLastPos+FW+FW+1, y, mn, LEFT|LEADING0, 2); // mm before '.' lcd_vline(lcdLastPos, y, 2); uint16_t ss = ap * 6; - lcd_outdezAtt(lcdLastPos+3, y, ss / 1000, LEFT); // '' + lcd_outdezNAtt(lcdLastPos+3, y, ss / 1000, LEFT|LEADING0, 2); // '' lcd_plot(lcdLastPos, y+FH-2, 0); // small decimal point - lcd_outdezAtt(lcdLastPos+2, y, ss % 1000, LEFT); // '' + lcd_outdezNAtt(lcdLastPos+2, y, ss % 1000, LEFT|LEADING0, 3); // '' lcd_vline(lcdLastPos, y, 2); lcd_vline(lcdLastPos+2, y, 2); } From b80cc973fef161e2e26fd0e6bfdd75077fc77155 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 20 Mar 2015 14:17:34 +0400 Subject: [PATCH 012/100] Fix simu compilation, simu will now quit after a manual EEPROM reset --- radio/src/gui/Taranis/menu_general_version.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/radio/src/gui/Taranis/menu_general_version.cpp b/radio/src/gui/Taranis/menu_general_version.cpp index fe2bfca2d..99a7c0c7b 100755 --- a/radio/src/gui/Taranis/menu_general_version.cpp +++ b/radio/src/gui/Taranis/menu_general_version.cpp @@ -92,7 +92,11 @@ void menuGeneralVersion(uint8_t event) s_warning_result = 0; displayPopup(STR_EEPROMFORMATTING); eeErase(false); +#if !defined(SIMU) NVIC_SystemReset(); +#else + exit(0); +#endif } SIMPLE_MENU(STR_MENUVERSION, menuTabGeneral, e_Vers, 1); From 5a2d373eddd633a022365b74b963725f29033a7f Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 20 Mar 2015 11:34:48 +0100 Subject: [PATCH 013/100] [Taranis X9E] 2.5s Timer with small graphics for Power OFF --- radio/src/gui/Taranis/gui.h | 3 + radio/src/gui/Taranis/widgets.cpp | 9 +++ radio/src/main_arm.cpp | 7 ++ radio/src/targets/taranis/board_taranis.h | 4 + radio/src/targets/taranis/bootloader/boot.cpp | 16 ++-- radio/src/targets/taranis/pwr_driver.c | 81 ++++++++++--------- 6 files changed, 76 insertions(+), 44 deletions(-) diff --git a/radio/src/gui/Taranis/gui.h b/radio/src/gui/Taranis/gui.h index bbf3eca66..415c8197b 100755 --- a/radio/src/gui/Taranis/gui.h +++ b/radio/src/gui/Taranis/gui.h @@ -53,6 +53,9 @@ void displayScrollbar(coord_t x, coord_t y, coord_t h, uint16_t offset, uint16_t void displayMenuBar(const MenuItem *menu, int index); void displayProgressBar(const char *label); void updateProgressBar(int num, int den); +#if defined(REV9E) +void displayShutdownProgress(uint32_t progress); +#endif extern coord_t scrollbar_X; #define SET_SCROLLBAR_X(x) scrollbar_X = (x); diff --git a/radio/src/gui/Taranis/widgets.cpp b/radio/src/gui/Taranis/widgets.cpp index f189b6f2f..566d2da34 100755 --- a/radio/src/gui/Taranis/widgets.cpp +++ b/radio/src/gui/Taranis/widgets.cpp @@ -63,6 +63,15 @@ void menu_lcd_onoff(coord_t x, coord_t y, uint8_t value, LcdFlags attr) lcd_square(x, y, 7); } +void displayShutdownProgress(uint32_t progress) +{ + drawFilledRect((LCD_W-44)/2, LCD_H/2-5, 28, 10, SOLID, ERASE); + lcd_rect((LCD_W-44)/2, LCD_H/2-5, 28, 10); + for (int i=(progress/100); i>=0; i--) { + drawFilledRect((LCD_W-44)/2+3+i*8, LCD_H/2-3, 6, 6, SOLID); + } +} + void displayScreenIndex(uint8_t index, uint8_t count, uint8_t attr) { lcd_outdezAtt(LCD_W, 0, count, attr); diff --git a/radio/src/main_arm.cpp b/radio/src/main_arm.cpp index 4327b0849..f13d819c0 100644 --- a/radio/src/main_arm.cpp +++ b/radio/src/main_arm.cpp @@ -185,6 +185,13 @@ void perMain() drawStatusLine(); } +#if defined(REV9E) && !defined(SIMU) + uint32_t pwr_pressed_duration = pwrPressedDuration(); + if (pwr_pressed_duration > 0) { + displayShutdownProgress(pwr_pressed_duration); + } +#endif + lcdRefresh(); #if defined(REV9E) && !defined(SIMU) diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index fff66ed5c..9b1369281 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -243,6 +243,10 @@ extern "C" { void pwrInit(void); uint32_t pwrCheck(void); void pwrOff(void); +#if defined(REV9E) +uint32_t pwrPressed(void); +uint32_t pwrPressedDuration(void); +#endif #define UNEXPECTED_SHUTDOWN() (g_eeGeneral.unexpectedShutdown) // Backlight driver diff --git a/radio/src/targets/taranis/bootloader/boot.cpp b/radio/src/targets/taranis/bootloader/boot.cpp index 8f5f6690e..8a43784e1 100755 --- a/radio/src/targets/taranis/bootloader/boot.cpp +++ b/radio/src/targets/taranis/bootloader/boot.cpp @@ -791,11 +791,17 @@ int main() } } - if (pwrCheck() == e_power_off && state != ST_FLASHING && state != ST_USB) { - lcdOff(); // this drains LCD caps - pwrOff(); - for (;;) { - // Wait for power to go off + if (state != ST_FLASHING && state != ST_USB) { +#if defined(REV9E) + if (pwrPressed()) { +#else + if (pwrCheck() == e_power_off) { +#endif + lcdOff(); // this drains LCD caps + pwrOff(); + for (;;) { + // Wait for power to go off + } } } diff --git a/radio/src/targets/taranis/pwr_driver.c b/radio/src/targets/taranis/pwr_driver.c index c24b7e490..934da3ec3 100644 --- a/radio/src/targets/taranis/pwr_driver.c +++ b/radio/src/targets/taranis/pwr_driver.c @@ -37,14 +37,8 @@ #include "board_taranis.h" #include "../../pwr.h" -#ifdef REV9E - #define POWER_STATE_OFF 0 - #define POWER_STATE_START 1 - #define POWER_STATE_RUNNING 2 - #define POWER_STATE_STOPPING 3 - #define POWER_STATE_STOPPED 4 - uint8_t PowerState = POWER_STATE_OFF ; -#endif +extern volatile uint32_t g_tmr10ms; +#define get_tmr10ms() g_tmr10ms void pwrInit() { @@ -99,6 +93,10 @@ void pwrInit() // Soft power ON GPIO_SetBits(GPIOPWR, PIN_MCU_PWR); + +#if defined(REV9E) + while (pwrPressed()) ; +#endif } void pwrOff() @@ -106,41 +104,45 @@ void pwrOff() GPIO_ResetBits(GPIOPWR, PIN_MCU_PWR); } -// TODO enums should be UPPERCASE +#if defined(REV9E) +uint32_t pwrPressed() +{ + return GPIO_ReadInputDataBit(GPIOPWR, PIN_PWR_STATUS) == Bit_RESET; +} +#if !defined(BOOT) +uint32_t pwrPressTime = 0; +uint32_t pwrPressedDuration() +{ + if (pwrPressTime == 0) { + return 0; + } + else { + return get_tmr10ms() - pwrPressTime; + } +} +uint32_t pwrCheck() +{ + if (pwrPressed()) { + if (pwrPressTime == 0) { + pwrPressTime = get_tmr10ms(); + } + else { + if (get_tmr10ms() - pwrPressTime > 250) { + return e_power_off; + } + } + } + else { + pwrPressTime = 0; + } + return e_power_on; +} +#endif +#else uint32_t pwrCheck() { #if defined(SIMU) return e_power_on; -#elif defined(REV9E) - uint32_t switchValue = GPIO_ReadInputDataBit(GPIOPWR, PIN_PWR_STATUS) == Bit_RESET; - switch ( PowerState ) - { - case POWER_STATE_OFF : - PowerState = POWER_STATE_START ; - return e_power_on ; - - case POWER_STATE_START : - if ( !switchValue ) { - PowerState = POWER_STATE_RUNNING ; - } - return e_power_on ; - - case POWER_STATE_RUNNING : - if ( switchValue ) { - PowerState = POWER_STATE_STOPPING ; -// return e_power_on; - } - return e_power_on ; - - case POWER_STATE_STOPPING : - if ( !switchValue ) { - PowerState = POWER_STATE_STOPPED ; - } - return e_power_off ; - - case POWER_STATE_STOPPED : - return e_power_off ; - } #else if (GPIO_ReadInputDataBit(GPIOPWR, PIN_PWR_STATUS) == Bit_RESET) return e_power_on; @@ -150,3 +152,4 @@ uint32_t pwrCheck() return e_power_off; #endif } +#endif From c756815ad22ba722515060e0a6416cb1810bad61 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 20 Mar 2015 14:49:58 +0400 Subject: [PATCH 014/100] Fix #2153 --- companion/src/modeledit/logicalswitches.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/companion/src/modeledit/logicalswitches.cpp b/companion/src/modeledit/logicalswitches.cpp index 59cd184c2..5a156b49c 100644 --- a/companion/src/modeledit/logicalswitches.cpp +++ b/companion/src/modeledit/logicalswitches.cpp @@ -261,6 +261,7 @@ void LogicalSwitchesPanel::edited() } emit modified(); lock = false; + updateLine(i); } } From a458c78dbe0822025d79a943bdd110b95742aea5 Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 20 Mar 2015 12:09:37 +0100 Subject: [PATCH 015/100] [Taranis] USB=MASSSTORAGE option again OK --- radio/src/main_arm.cpp | 2 -- radio/src/opentx.h | 4 ++++ radio/src/tasks_arm.cpp | 3 --- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/radio/src/main_arm.cpp b/radio/src/main_arm.cpp index f13d819c0..09c7b209f 100644 --- a/radio/src/main_arm.cpp +++ b/radio/src/main_arm.cpp @@ -39,8 +39,6 @@ static uint8_t currentSpeakerVolume = 255; uint8_t requiredSpeakerVolume = 255; -extern void checkBattery(); - void handleUsbConnection() { #if defined(PCBTARANIS) && !defined(SIMU) diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 577aff5a1..b8964aff9 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1474,6 +1474,10 @@ enum AUDIO_SOUNDS { extern uint8_t requiredSpeakerVolume; #endif +extern void checkBattery(); +extern void opentxClose(); +extern void opentxInit(); + // Re-useable byte array to save having multiple buffers #define SD_SCREEN_FILE_LENGTH (32) union ReusableBuffer diff --git a/radio/src/tasks_arm.cpp b/radio/src/tasks_arm.cpp index 8ca2b437a..a0a0b5c40 100644 --- a/radio/src/tasks_arm.cpp +++ b/radio/src/tasks_arm.cpp @@ -155,9 +155,6 @@ void mixerTask(void * pdata) #define MENU_TASK_PERIOD_TICKS 10 // 20ms -extern void opentxClose(); -extern void opentxInit(); - void menusTask(void * pdata) { opentxInit(); From 99e5576af30f60e232676f98a1cb699b55afb01f Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 20 Mar 2015 16:01:01 +0400 Subject: [PATCH 016/100] [X9E] More obvious power off screen --- radio/src/gui/Taranis/widgets.cpp | 2 ++ radio/src/translations.cpp | 4 ++++ radio/src/translations.h | 4 ++++ 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/pl.h.txt | 1 + radio/src/translations/pt.h.txt | 1 + radio/src/translations/se.h.txt | 1 + 13 files changed, 20 insertions(+) diff --git a/radio/src/gui/Taranis/widgets.cpp b/radio/src/gui/Taranis/widgets.cpp index 566d2da34..92be0145a 100755 --- a/radio/src/gui/Taranis/widgets.cpp +++ b/radio/src/gui/Taranis/widgets.cpp @@ -65,6 +65,8 @@ void menu_lcd_onoff(coord_t x, coord_t y, uint8_t value, LcdFlags attr) void displayShutdownProgress(uint32_t progress) { + lcd_clear(); + lcd_putsLeft(LCD_H/2-20, STR_POWEROFF); drawFilledRect((LCD_W-44)/2, LCD_H/2-5, 28, 10, SOLID, ERASE); lcd_rect((LCD_W-44)/2, LCD_H/2-5, 28, 10); for (int i=(progress/100); i>=0; i--) { diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 2e1b445f0..896cc93fd 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -376,6 +376,10 @@ const pm_char STR_SHUTDOWN[] PROGMEM = TR_SHUTDOWN; const pm_char STR_SAVEMODEL[] PROGMEM = TR_SAVEMODEL; #endif +#if defined(PCBTARANIS) && defined(REV9E) +const pm_char STR_POWEROFF[] PROGMEM = TR_POWEROFF; +#endif + const pm_char STR_BATT_CALIB[] PROGMEM = TR_BATT_CALIB; #if defined(CPUARM) || defined(FRSKY) diff --git a/radio/src/translations.h b/radio/src/translations.h index 0c180c29c..a1b1e3f13 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -542,6 +542,10 @@ extern const pm_char STR_SHUTDOWN[]; extern const pm_char STR_SAVEMODEL[]; #endif +#if defined(PCBTARANIS) && defined(REV9E) +extern const pm_char STR_POWEROFF[]; +#endif + extern const pm_char STR_BATT_CALIB[]; #if defined(CPUARM) || defined(FRSKY) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index dda775813..8f65775f2 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -777,6 +777,7 @@ #define TR_PITCH_AT_ZERO INDENT "Tón na nule" #define TR_PITCH_AT_MAX INDENT "Tón na maximu" #define TR_REPEAT_AT_ZERO INDENT "Opakování na nule" +#define TR_POWEROFF "\027Power OFF..." #define TR_SHUTDOWN "Vypínání.." #define TR_SAVEMODEL "Ukládám nastavení modelu" #define TR_BATT_CALIB "Kalib. baterie" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index d5f2fe154..8efaac004 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -776,6 +776,7 @@ #define TR_PITCH_AT_ZERO INDENT "Niedrigster Ton" #define TR_PITCH_AT_MAX INDENT "Höchster Ton" #define TR_REPEAT_AT_ZERO INDENT "Wiederholrate" +#define TR_POWEROFF "\027Power OFF..." #define TR_SHUTDOWN "Herunterfahren" #define TR_SAVEMODEL "Modelleinstellungen speichern" #define TR_BATT_CALIB "Akku abgleichen" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index c37a278d7..6fbd85abe 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -776,6 +776,7 @@ #define TR_PITCH_AT_ZERO INDENT "Pitch at Zero" #define TR_PITCH_AT_MAX INDENT "Pitch at Max" #define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero" +#define TR_POWEROFF "\027Power OFF..." #define TR_SHUTDOWN "SHUTTING DOWN" #define TR_SAVEMODEL "Saving model settings" #define TR_BATT_CALIB "Battery Calib" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 9d4b0d24c..8158b85e9 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -714,6 +714,7 @@ #define TR_PITCH_AT_ZERO INDENT "Pitch at Zero" #define TR_PITCH_AT_MAX INDENT "Pitch at Max" #define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero" +#define TR_POWEROFF "\027Power OFF..." #define TR_SHUTDOWN "APAGANDO" #define TR_SAVEMODEL "Saving model settings" #define TR_BATT_CALIB "Calib.bateria" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 939ba26fa..1aafdb3a8 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -714,6 +714,7 @@ #define TR_PITCH_AT_ZERO INDENT "Pitch at Zero" #define TR_PITCH_AT_MAX INDENT "Pitch at Max" #define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero" +#define TR_POWEROFF "\027Power OFF..." #define TR_SHUTDOWN "SHUTTING DOWN" #define TR_SAVEMODEL "Saving model settings" #define TR_BATT_CALIB "Battery Calib" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 68f76ad9c..7f7fdef72 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -772,6 +772,7 @@ #define TR_PITCH_AT_ZERO INDENT "Tonalité au zéro" #define TR_PITCH_AT_MAX INDENT "Tonalité au max" #define TR_REPEAT_AT_ZERO INDENT "Intervalle au zéro" +#define TR_POWEROFF "\037\120ARRET..." #define TR_SHUTDOWN "ARRET EN COURS" #define TR_SAVEMODEL "Saving model settings" #define TR_BATT_CALIB "Calib. Batterie" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 25349d34d..b7a686018 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -714,6 +714,7 @@ #define TR_PITCH_AT_ZERO INDENT "Tono a Zero" #define TR_PITCH_AT_MAX INDENT "Tono al Max" #define TR_REPEAT_AT_ZERO INDENT "Ripeti a Zero" +#define TR_POWEROFF "\027Power OFF..." #define TR_SHUTDOWN "ARRESTO.." #define TR_SAVEMODEL "Saving model settings" #define TR_BATT_CALIB "Calibra batt." diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index b52c7dba2..09cfc84a3 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -712,6 +712,7 @@ #define TR_PITCH_AT_ZERO INDENT "Ton przy Zerze" #define TR_PITCH_AT_MAX INDENT "Ton przy Max" #define TR_REPEAT_AT_ZERO INDENT "Powtórz przy Zerze" +#define TR_POWEROFF "\027Power OFF..." #define TR_SHUTDOWN "Wyłączanie.." #define TR_SAVEMODEL "Zapisz ustwienia modelu" #define TR_BATT_CALIB "Kalib:Baterii" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index b14b60d85..3e37fe896 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -714,6 +714,7 @@ #define TR_PITCH_AT_ZERO INDENT "Pitch at Zero" #define TR_PITCH_AT_MAX INDENT "Pitch at Max" #define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero" +#define TR_POWEROFF "\027Power OFF..." #define TR_SHUTDOWN "DESLIGANDOo" #define TR_SAVEMODEL "Saving model settings" #define TR_BATT_CALIB "CALIBRAR BATT" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 1a550134e..0476488a0 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -714,6 +714,7 @@ #define TR_PITCH_AT_ZERO INDENT "Ton vid Noll" #define TR_PITCH_AT_MAX INDENT "Ton vid Max" #define TR_REPEAT_AT_ZERO INDENT "Repetera vid Noll" +#define TR_POWEROFF "\027Power OFF..." #define TR_SHUTDOWN "STÄNGER AV" #define TR_SAVEMODEL "Spara modellinställn." #define TR_BATT_CALIB "Kalib. Batteri" From da2d821e22a68279dab259baf117c1e1784bfe2f Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 20 Mar 2015 16:07:58 +0400 Subject: [PATCH 017/100] Compilation fix --- radio/src/gui/Taranis/widgets.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/gui/Taranis/widgets.cpp b/radio/src/gui/Taranis/widgets.cpp index 92be0145a..7f264bc81 100755 --- a/radio/src/gui/Taranis/widgets.cpp +++ b/radio/src/gui/Taranis/widgets.cpp @@ -63,6 +63,7 @@ void menu_lcd_onoff(coord_t x, coord_t y, uint8_t value, LcdFlags attr) lcd_square(x, y, 7); } +#if defined(REV9E) void displayShutdownProgress(uint32_t progress) { lcd_clear(); @@ -73,6 +74,7 @@ void displayShutdownProgress(uint32_t progress) drawFilledRect((LCD_W-44)/2+3+i*8, LCD_H/2-3, 6, 6, SOLID); } } +#endif void displayScreenIndex(uint8_t index, uint8_t count, uint8_t attr) { From 3afd10011a57e0d62253f76fc06c35eda21067f5 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 20 Mar 2015 16:53:51 +0400 Subject: [PATCH 018/100] Fix #2152, Fix SWR value --- radio/src/telemetry/frsky.h | 3 ++- radio/src/telemetry/frsky_sport.cpp | 4 ++-- radio/src/translations/fr.h.txt | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index a98632f0a..cd51da11d 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -331,7 +331,8 @@ struct FrskyData { }; #endif -#define IS_VALID_XJT_VERSION() (frskyData.xjtVersion != 0 && frskyData.xjtVersion != 0xff) +#define IS_VALID_XJT_VERSION() (frskyData.xjtVersion != 0 && frskyData.xjtVersion != 0xff) +#define IS_HIDDEN_TELEMETRY_VALUE() ((appId == XJT_VERSION_ID) || ((appId == SWR_ID) && !IS_VALID_XJT_VERSION())) enum AlarmLevel { alarm_off = 0, diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index c923f589c..2c8c0e412 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -221,8 +221,8 @@ void processSportPacket(uint8_t *packet) uint16_t value = HUB_DATA_U16(packet); processHubPacket(id, value); } - else { - if (appId == ADC1_ID || appId == ADC2_ID || appId == BATT_ID) { + else if (!IS_HIDDEN_TELEMETRY_VALUE()) { + if (appId == ADC1_ID || appId == ADC2_ID || appId == BATT_ID || appId == SWR_ID) { data = SPORT_DATA_U8(packet); } const FrSkySportSensor * sensor = getFrSkySportSensor(appId); diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 7f7fdef72..9e58c5745 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -852,8 +852,8 @@ #define TR_PATH_TOO_LONG "Chemin trop long" #define TR_VIEW_TEXT "Voir texte" #define TR_FLASH_BOOTLOADER "Flasher BootLoader" -#define TR_FLASH_EXTERNAL_DEVICE "Flash External Device" -#define TR_FLASH_INTERNAL_MODULE "Flash Module Interne" +#define TR_FLASH_EXTERNAL_DEVICE "Flasher module externe" +#define TR_FLASH_INTERNAL_MODULE "Flasher module interne" #define TR_WRITING "\032Ecriture..." #define TR_CONFIRM_FORMAT "Confirmer Formatage?" #define TR_INTERNALRF "HF interne" From 21f8eb7e9d86e9be06b6241241c541dcf9796ba7 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 20 Mar 2015 16:58:00 +0400 Subject: [PATCH 019/100] ZSTR for all languages --- radio/src/translations/cz.h.txt | 2 +- radio/src/translations/de.h.txt | 2 +- radio/src/translations/en.h.txt | 2 +- radio/src/translations/es.h.txt | 23 +++++++++++++++++++++++ radio/src/translations/fi.h.txt | 23 +++++++++++++++++++++++ radio/src/translations/fr.h.txt | 2 +- radio/src/translations/it.h.txt | 23 +++++++++++++++++++++++ radio/src/translations/pl.h.txt | 14 +++++++------- radio/src/translations/pt.h.txt | 23 +++++++++++++++++++++++ radio/src/translations/se.h.txt | 23 +++++++++++++++++++++++ 10 files changed, 126 insertions(+), 11 deletions(-) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 8f65775f2..dee0eef03 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1039,7 +1039,7 @@ #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" -#define ZSTR_BATT "Batt" +#define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" #define ZSTR_RPM "RPM" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 8efaac004..9e1f0c6e3 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1038,7 +1038,7 @@ #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" -#define ZSTR_BATT "Batt" +#define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" #define ZSTR_RPM "RPM" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 6fbd85abe..b3dfedc12 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1038,7 +1038,7 @@ #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" -#define ZSTR_BATT "Batt" +#define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" #define ZSTR_RPM "RPM" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 8158b85e9..1de9db987 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -969,3 +969,26 @@ #define TR_UNLOCKED "Unlocked" #define TR_ID "ID" #define TR_PRECISION "Precision" + +#define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" +#define ZSTR_A1 "A1" +#define ZSTR_A2 "A2" +#define ZSTR_BATT "RxBt" +#define ZSTR_ALT "Alt" +#define ZSTR_TEMP "Temp" +#define ZSTR_RPM "RPM" +#define ZSTR_FUEL "Fuel" +#define ZSTR_VSPD "VSpd" +#define ZSTR_ACCX "AccX" +#define ZSTR_ACCY "AccY" +#define ZSTR_ACCZ "AccZ" +#define ZSTR_CURR "Curr" +#define ZSTR_VFAS "VFAS" +#define ZSTR_ASPD "ASpd" +#define ZSTR_GSPD "GSpd" +#define ZSTR_HDG "Hdg" +#define ZSTR_CELLS "Cels" +#define ZSTR_GPSALT "GAlt" +#define ZSTR_GPSDATETIME "Date" +#define ZSTR_GPS "GPS" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 1aafdb3a8..3087948c5 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -969,3 +969,26 @@ #define TR_UNLOCKED "Avattu" #define TR_ID "ID" #define TR_PRECISION "Precision" + +#define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" +#define ZSTR_A1 "A1" +#define ZSTR_A2 "A2" +#define ZSTR_BATT "RxBt" +#define ZSTR_ALT "Alt" +#define ZSTR_TEMP "Temp" +#define ZSTR_RPM "RPM" +#define ZSTR_FUEL "Fuel" +#define ZSTR_VSPD "VSpd" +#define ZSTR_ACCX "AccX" +#define ZSTR_ACCY "AccY" +#define ZSTR_ACCZ "AccZ" +#define ZSTR_CURR "Curr" +#define ZSTR_VFAS "VFAS" +#define ZSTR_ASPD "ASpd" +#define ZSTR_GSPD "GSpd" +#define ZSTR_HDG "Hdg" +#define ZSTR_CELLS "Cels" +#define ZSTR_GPSALT "GAlt" +#define ZSTR_GPSDATETIME "Date" +#define ZSTR_GPS "GPS" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 9e58c5745..c80ea4fe9 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1034,7 +1034,7 @@ #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" -#define ZSTR_BATT "Batt" +#define ZSTR_BATT "BtRx" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" #define ZSTR_RPM "RPM" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index b7a686018..5857d92ae 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -969,3 +969,26 @@ #define TR_UNLOCKED "Sbloccato" #define TR_ID "ID" #define TR_PRECISION "Precision" + +#define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" +#define ZSTR_A1 "A1" +#define ZSTR_A2 "A2" +#define ZSTR_BATT "RxBt" +#define ZSTR_ALT "Alt" +#define ZSTR_TEMP "Temp" +#define ZSTR_RPM "RPM" +#define ZSTR_FUEL "Fuel" +#define ZSTR_VSPD "VSpd" +#define ZSTR_ACCX "AccX" +#define ZSTR_ACCY "AccY" +#define ZSTR_ACCZ "AccZ" +#define ZSTR_CURR "Curr" +#define ZSTR_VFAS "VFAS" +#define ZSTR_ASPD "ASpd" +#define ZSTR_GSPD "GSpd" +#define ZSTR_HDG "Hdg" +#define ZSTR_CELLS "Cels" +#define ZSTR_GPSALT "GAlt" +#define ZSTR_GPSDATETIME "Date" +#define ZSTR_GPS "GPS" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 09cfc84a3..0a349d350 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -972,21 +972,21 @@ #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" -#define ZSTR_BATT "Bat." -#define ZSTR_ALT "Wysok." +#define ZSTR_BATT "RxBt" +#define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" #define ZSTR_RPM "RPM" -#define ZSTR_FUEL "Paliwo" +#define ZSTR_FUEL "Fuel" #define ZSTR_VSPD "VSpd" #define ZSTR_ACCX "AccX" #define ZSTR_ACCY "AccY" #define ZSTR_ACCZ "AccZ" -#define ZSTR_CURR "Natęż" +#define ZSTR_CURR "Curr" #define ZSTR_VFAS "VFAS" #define ZSTR_ASPD "ASpd" #define ZSTR_GSPD "GSpd" -#define ZSTR_HDG "Kurs" -#define ZSTR_CELLS "Cele" +#define ZSTR_HDG "Hdg" +#define ZSTR_CELLS "Cels" #define ZSTR_GPSALT "GAlt" -#define ZSTR_GPSDATETIME "Data" +#define ZSTR_GPSDATETIME "Date" #define ZSTR_GPS "GPS" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 3e37fe896..caf16a4e4 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -969,3 +969,26 @@ #define TR_UNLOCKED "Unlocked" #define TR_ID "ID" #define TR_PRECISION "Precision" + +#define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" +#define ZSTR_A1 "A1" +#define ZSTR_A2 "A2" +#define ZSTR_BATT "RxBt" +#define ZSTR_ALT "Alt" +#define ZSTR_TEMP "Temp" +#define ZSTR_RPM "RPM" +#define ZSTR_FUEL "Fuel" +#define ZSTR_VSPD "VSpd" +#define ZSTR_ACCX "AccX" +#define ZSTR_ACCY "AccY" +#define ZSTR_ACCZ "AccZ" +#define ZSTR_CURR "Curr" +#define ZSTR_VFAS "VFAS" +#define ZSTR_ASPD "ASpd" +#define ZSTR_GSPD "GSpd" +#define ZSTR_HDG "Hdg" +#define ZSTR_CELLS "Cels" +#define ZSTR_GPSALT "GAlt" +#define ZSTR_GPSDATETIME "Date" +#define ZSTR_GPS "GPS" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 0476488a0..447f40706 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -969,3 +969,26 @@ #define TR_UNLOCKED "Olåst" #define TR_ID "ID" #define TR_PRECISION "Precision" + +#define ZSTR_RSSI "RSSI" +#define ZSTR_SWR "SWR" +#define ZSTR_A1 "A1" +#define ZSTR_A2 "A2" +#define ZSTR_BATT "RxBt" +#define ZSTR_ALT "Alt" +#define ZSTR_TEMP "Temp" +#define ZSTR_RPM "RPM" +#define ZSTR_FUEL "Fuel" +#define ZSTR_VSPD "VSpd" +#define ZSTR_ACCX "AccX" +#define ZSTR_ACCY "AccY" +#define ZSTR_ACCZ "AccZ" +#define ZSTR_CURR "Curr" +#define ZSTR_VFAS "VFAS" +#define ZSTR_ASPD "ASpd" +#define ZSTR_GSPD "GSpd" +#define ZSTR_HDG "Hdg" +#define ZSTR_CELLS "Cels" +#define ZSTR_GPSALT "GAlt" +#define ZSTR_GPSDATETIME "Date" +#define ZSTR_GPS "GPS" From 81a14c17323ffe33dbccb27596e5a20a910dd3d4 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 20 Mar 2015 17:52:49 +0400 Subject: [PATCH 020/100] Instance numbers synced with FrSky servo channel changer, and displayed on telemetry page to ease choosing a new ID --- radio/src/gui/Taranis/menu_model_telemetry.cpp | 2 ++ radio/src/telemetry/frsky_sport.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 00fba7aa2..5374b029f 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -478,6 +478,8 @@ void menuModelTelemetry(uint8_t event) else { lcd_putsAtt(TELEM_COL2, y, "---", 0); // TODO shortcut } + TelemetrySensor * sensor = & g_model.telemetrySensors[index]; + lcd_outdezAtt(TELEM_COL2+10*FW, y, sensor->instance, 0); if (attr) { s_editMode = 0; s_currIdx = index; diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 2c8c0e412..8d5b224c1 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -167,7 +167,7 @@ void processSportUpdatePacket(uint8_t *packet) void processSportPacket(uint8_t *packet) { - uint8_t dataId = packet[0]; + uint8_t dataId = (packet[0] & 0x1F) + 1; uint8_t prim = packet[1]; uint16_t appId = *((uint16_t *)(packet+2)); From 52d1a399be051974d0a2df3ed4d6324e45080bf4 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 20 Mar 2015 18:19:20 +0400 Subject: [PATCH 021/100] Align simulated telemetry sensor IDs to default real ones --- radio/src/telemetry/frsky.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 3f7294ec0..7a243ddc8 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -566,13 +566,13 @@ void telemetryReset() #endif #if defined(CPUARM) && defined(SIMU) - setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, RSSI_ID, 0, 75, UNIT_RAW, 0); - setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, SWR_ID, 0, 5, UNIT_RAW, 0); - setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID, 0, 100, UNIT_CELSIUS, 0); - setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID, 1, 200, UNIT_CELSIUS, 0); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, RSSI_ID, 25, 75, UNIT_RAW, 0); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, SWR_ID, 25, 5, UNIT_RAW, 0); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID, 6, 100, UNIT_CELSIUS, 0); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID+1, 6, 200, UNIT_CELSIUS, 0); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, ALT_FIRST_ID, 1, 1000, UNIT_METERS, 2); - setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CELLS_FIRST_ID, 1, 0x80280220, UNIT_CELLS, 0); - setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CURR_FIRST_ID, 1, 100, UNIT_AMPS, 2); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CELLS_FIRST_ID, 2, 0x80280220, UNIT_CELLS, 0); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CURR_FIRST_ID, 3, 100, UNIT_AMPS, 2); #endif } From 02cbd9db6a15867bce2595c255f891a0cadf0936 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 20 Mar 2015 23:38:46 +0400 Subject: [PATCH 022/100] Add A3/A4, Hide SP2UART data channel, translations --- .../src/gui/Taranis/menu_model_telemetry.cpp | 30 ++++++++++--------- radio/src/telemetry/frsky.cpp | 4 +-- radio/src/telemetry/frsky.h | 6 +++- radio/src/telemetry/frsky_sport.cpp | 9 +++--- radio/src/translations.cpp | 12 ++++++++ radio/src/translations.h | 12 ++++++++ radio/src/translations/cz.h.txt | 15 ++++++++++ radio/src/translations/de.h.txt | 15 ++++++++++ radio/src/translations/en.h.txt | 15 ++++++++++ radio/src/translations/es.h.txt | 15 ++++++++++ radio/src/translations/fi.h.txt | 15 ++++++++++ radio/src/translations/fr.h.txt | 21 +++++++++++-- radio/src/translations/it.h.txt | 15 ++++++++++ radio/src/translations/pl.h.txt | 15 ++++++++++ radio/src/translations/pt.h.txt | 15 ++++++++++ radio/src/translations/se.h.txt | 15 ++++++++++ 16 files changed, 205 insertions(+), 24 deletions(-) diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 5374b029f..9926fda5f 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -264,7 +264,7 @@ void menuModelSensor(uint8_t event) } } else { - sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, "Formula", "\010Add\0 Average\0Min\0 Max\0 MultiplyCell\0 ConsumptDistance", sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); + sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, "\010Add\0 Average\0Min\0 Max\0 MultiplyCell\0 ConsumptDistance", sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); if (attr && checkIncDec_Ret) { sensor->param = 0; if (sensor->formula == TELEM_FORMULA_CELL) { @@ -284,7 +284,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_UNIT: - lcd_putsLeft(y, "Unit"); + lcd_putsLeft(y, STR_UNIT); // TODO flash saving with selectMenuItem where I copied those 2 lines? lcd_putsiAtt(SENSOR_2ND_COLUMN, y, STR_VTELEMUNIT, sensor->unit, attr); if (attr) { @@ -305,7 +305,7 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM1: if (sensor->type == TELEM_TYPE_CALCULATED) { if (sensor->formula == TELEM_FORMULA_CELL) { - lcd_putsLeft(y, "Cells sensor"); + lcd_putsLeft(y, STR_CELLSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->cell.source ? MIXSRC_FIRST_TELEM+3*(sensor->cell.source-1) : 0, attr); if (attr) { sensor->cell.source = checkIncDec(event, sensor->cell.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isCellsSensor); @@ -313,7 +313,7 @@ void menuModelSensor(uint8_t event) break; } else if (sensor->formula == TELEM_FORMULA_DIST) { - lcd_putsLeft(y, "GPS sensor"); + lcd_putsLeft(y, STR_GPSSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->dist.gps ? MIXSRC_FIRST_TELEM+3*(sensor->dist.gps-1) : 0, attr); if (attr) { sensor->dist.gps = checkIncDec(event, sensor->dist.gps, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isGPSSensor); @@ -321,7 +321,7 @@ void menuModelSensor(uint8_t event) break; } else if (sensor->formula == TELEM_FORMULA_CONSUMPTION) { - lcd_putsLeft(y, "Amps sensor"); + lcd_putsLeft(y, STR_CURRENTSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->consumption.source ? MIXSRC_FIRST_TELEM+3*(sensor->consumption.source-1) : 0, attr); if (attr) { sensor->consumption.source = checkIncDec(event, sensor->consumption.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isCurrentSensor); @@ -330,7 +330,7 @@ void menuModelSensor(uint8_t event) } } else { - lcd_putsLeft(y, "Ratio"); + lcd_putsLeft(y, STR_RATIO); if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); if (sensor->custom.ratio == 0) lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); @@ -343,11 +343,11 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM2: if (sensor->type == TELEM_TYPE_CALCULATED) { if (sensor->formula == TELEM_FORMULA_CELL) { - sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, "Cell index", "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event); + sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event); break; } else if (sensor->formula == TELEM_FORMULA_DIST) { - lcd_putsLeft(y, "Alt sensor"); + lcd_putsLeft(y, STR_ALTSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->dist.alt ? MIXSRC_FIRST_TELEM+3*(sensor->dist.alt-1) : 0, attr); if (attr) { sensor->dist.alt = checkIncDec(event, sensor->dist.alt, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isAltSensor); @@ -369,7 +369,7 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM4: { - putsStrIdx(0, y, "Source", k-SENSOR_FIELD_PARAM1+1); + putsStrIdx(0, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1); int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1]; if (attr) { source = checkIncDec(event, source, -TELEM_VALUES_MAX, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); @@ -385,11 +385,11 @@ void menuModelSensor(uint8_t event) } case SENSOR_FIELD_INPUT_FLAGS: - sensor->inputFlags = selectMenuItem(SENSOR_2ND_COLUMN, y, "Options", "\013None\0 ""Auto Offset""Filter\0", sensor->inputFlags, 0, TELEM_INPUT_FLAGS_MAX, attr, event); + sensor->inputFlags = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_OPTIONS, "\013None\0 ""Auto Offset""Filter\0", sensor->inputFlags, 0, TELEM_INPUT_FLAGS_MAX, attr, event); break; case SENSOR_FIELD_LOGS: - ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, "Logs", attr, event); + ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, STR_LOGS, attr, event); break; } @@ -479,7 +479,7 @@ void menuModelTelemetry(uint8_t event) lcd_putsAtt(TELEM_COL2, y, "---", 0); // TODO shortcut } TelemetrySensor * sensor = & g_model.telemetrySensors[index]; - lcd_outdezAtt(TELEM_COL2+10*FW, y, sensor->instance, 0); + lcd_outdezAtt(TELEM_COL3+1*FW, y, sensor->instance, LEFT); if (attr) { s_editMode = 0; s_currIdx = index; @@ -503,6 +503,8 @@ void menuModelTelemetry(uint8_t event) case ITEM_TELEMETRY_SENSORS_LABEL: lcd_putsLeft(y, STR_TELEMETRY_SENSORS); + lcd_putsAtt(TELEM_COL2, y, STR_VALUE, 0); + lcd_putsAtt(TELEM_COL3+1*FW, y, STR_ID, 0); break; case ITEM_TELEMETRY_NEWSENSOR: @@ -592,8 +594,8 @@ void menuModelTelemetry(uint8_t event) #if defined(REV9E) case ITEM_TELEMETRY_TOP_LCD_TIMER: - lcd_putsLeft(y, "Top LCD Timer"); - putsStrIdx(TELEM_COL2, y, "Timer", g_model.topLcdTimer+1, attr); + lcd_putsLeft(y, STR_TOPLCDTIMER); + putsStrIdx(TELEM_COL2, y, STR_TIMER, g_model.topLcdTimer+1, attr); if (attr) { g_model.topLcdTimer = checkIncDec(event, g_model.topLcdTimer, 0, MAX_TIMERS-1, EE_MODEL); } diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 7a243ddc8..046921ce0 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -568,8 +568,8 @@ void telemetryReset() #if defined(CPUARM) && defined(SIMU) setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, RSSI_ID, 25, 75, UNIT_RAW, 0); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, SWR_ID, 25, 5, UNIT_RAW, 0); - setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID, 6, 100, UNIT_CELSIUS, 0); - setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID+1, 6, 200, UNIT_CELSIUS, 0); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID, 5, 100, UNIT_CELSIUS, 0); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID+0x10, 5, 200, UNIT_CELSIUS, 0); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, ALT_FIRST_ID, 1, 1000, UNIT_METERS, 2); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CELLS_FIRST_ID, 2, 0x80280220, UNIT_CELLS, 0); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CURR_FIRST_ID, 3, 100, UNIT_AMPS, 2); diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index cd51da11d..07c1b7dfc 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -135,6 +135,10 @@ #define RSSI_ID 0xf101 #define ADC1_ID 0xf102 #define ADC2_ID 0xf103 +#define ADC3_ID 0x0901 +#define ADC4_ID 0x0911 +#define SP2UART_A_ID 0xfd00 +#define SP2UART_B_ID 0xfd01 #define BATT_ID 0xf104 #define SWR_ID 0xf105 #define XJT_VERSION_ID 0xf106 @@ -332,7 +336,7 @@ struct FrskyData { #endif #define IS_VALID_XJT_VERSION() (frskyData.xjtVersion != 0 && frskyData.xjtVersion != 0xff) -#define IS_HIDDEN_TELEMETRY_VALUE() ((appId == XJT_VERSION_ID) || ((appId == SWR_ID) && !IS_VALID_XJT_VERSION())) +#define IS_HIDDEN_TELEMETRY_VALUE() ((appId == SP2UART_A_ID) || (appId == SP2UART_B_ID) || (appId == XJT_VERSION_ID) || ((appId == SWR_ID) && !IS_VALID_XJT_VERSION())) enum AlarmLevel { alarm_off = 0, diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 8d5b224c1..e7fff5d58 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -59,9 +59,11 @@ struct FrSkySportSensor { const FrSkySportSensor sportSensors[] = { { RSSI_ID, RSSI_ID, ZSTR_RSSI, UNIT_RAW, 0 }, { SWR_ID, SWR_ID, ZSTR_SWR, UNIT_RAW, 0 }, - { ADC1_ID, ADC1_ID, ZSTR_A1, UNIT_VOLTS, 0 }, - { ADC2_ID, ADC2_ID, ZSTR_A2, UNIT_VOLTS, 0 }, - { BATT_ID, BATT_ID, ZSTR_BATT, UNIT_VOLTS, 0 }, + { ADC1_ID, ADC1_ID, ZSTR_A1, UNIT_VOLTS, 1 }, + { ADC2_ID, ADC2_ID, ZSTR_A2, UNIT_VOLTS, 1 }, + { ADC3_ID, ADC3_ID, ZSTR_A3, UNIT_VOLTS, 2 }, + { ADC4_ID, ADC4_ID, ZSTR_A4, UNIT_VOLTS, 2 }, + { BATT_ID, BATT_ID, ZSTR_BATT, UNIT_VOLTS, 1 }, { T1_FIRST_ID, T2_LAST_ID, ZSTR_TEMP, UNIT_CELSIUS, 0 }, { RPM_FIRST_ID, RPM_LAST_ID, ZSTR_RPM, UNIT_RPMS, 0 }, { FUEL_FIRST_ID, FUEL_LAST_ID, ZSTR_FUEL, UNIT_PERCENT, 0 }, @@ -251,7 +253,6 @@ void frskySportSetDefault(int index, uint16_t id, uint8_t instance) uint8_t prec = min(2, sensor->prec); telemetrySensor.init(sensor->name, unit, prec); if (id >= ADC1_ID && id <= BATT_ID) { - telemetrySensor.prec = 1; telemetrySensor.custom.ratio = 132; telemetrySensor.inputFlags = TELEM_INPUT_FLAGS_FILTERING; } diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 896cc93fd..ed6cfcadc 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -535,9 +535,21 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR; const pm_char STR_CRITICALALARM[] PROGMEM = TR_CRITICALALARM; const pm_char STR_TELEMETRY_TYPE[] PROGMEM = TR_TELEMETRY_TYPE; const pm_char STR_TELEMETRY_SENSORS[] PROGMEM = TR_TELEMETRY_SENSORS; + const pm_char STR_VALUE[] PROGMEM = TR_VALUE; + const pm_char STR_TOPLCDTIMER[] PROGMEM = TR_TOPLCDTIMER; + const pm_char STR_UNIT[] PROGMEM = TR_UNIT; const pm_char STR_TELEMETRY_NEWSENSOR[] PROGMEM = TR_TELEMETRY_NEWSENSOR; const pm_char STR_ID[] PROGMEM = TR_ID; const pm_char STR_PRECISION[] PROGMEM = TR_PRECISION; + const pm_char STR_RATIO[] PROGMEM = TR_RATIO; + const pm_char STR_FORMULA[] PROGMEM = TR_FORMULA; + const pm_char STR_CELLINDEX[] PROGMEM = TR_CELLINDEX; + const pm_char STR_LOGS[] PROGMEM = TR_LOGS; + const pm_char STR_OPTIONS[] PROGMEM = TR_OPTIONS; + const pm_char STR_ALTSENSOR[] PROGMEM = TR_ALTSENSOR; + const pm_char STR_CELLSENSOR[] PROGMEM = TR_CELLSENSOR; + const pm_char STR_GPSSENSOR[] PROGMEM = TR_GPSSENSOR; + const pm_char STR_CURRENTSENSOR[] PROGMEM = TR_CURRENTSENSOR; #endif #if defined(PCBTARANIS) diff --git a/radio/src/translations.h b/radio/src/translations.h index a1b1e3f13..2214d71f2 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -741,9 +741,21 @@ extern const pm_char STR_BLCOLOR[]; extern const pm_char STR_CRITICALALARM[]; extern const pm_char STR_TELEMETRY_TYPE[]; extern const pm_char STR_TELEMETRY_SENSORS[]; + extern const pm_char STR_VALUE[]; + extern const pm_char STR_TOPLCDTIMER[]; + extern const pm_char STR_UNIT[] PROGMEM; extern const pm_char STR_TELEMETRY_NEWSENSOR[]; extern const pm_char STR_ID[]; extern const pm_char STR_PRECISION[]; + extern const pm_char STR_RATIO[]; + extern const pm_char STR_FORMULA[]; + extern const pm_char STR_CELLINDEX[]; + extern const pm_char STR_LOGS[]; + extern const pm_char STR_OPTIONS[]; + extern const pm_char STR_ALTSENSOR[]; + extern const pm_char STR_CELLSENSOR[]; + extern const pm_char STR_GPSSENSOR[]; + extern const pm_char STR_CURRENTSENSOR[]; #endif #if defined(PCBTARANIS) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index dee0eef03..2daddecd7 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -900,6 +900,9 @@ #define TR_MODULE INDENT "Modul" #define TR_TELEMETRY_TYPE TR("Typ", "Typ telemetrie") #define TR_TELEMETRY_SENSORS "Senzory" +#define TR_VALUE "Value" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Unit" #define TR_TELEMETRY_NEWSENSOR INDENT "+ Přidat nový senzor.." #define TR_CHANNELRANGE INDENT "Rozsah kanálů" #define TR_LOWALARM INDENT "Nízký Alarm" @@ -1034,11 +1037,23 @@ #define TR_UNLOCKED "Odemčeno" #define TR_ID "ID" #define TR_PRECISION "Přesnost" +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formula" +#define TR_CELLINDEX "Cell index" +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Alt sensor" +#define TR_CELLSENSOR "Cell sensor" +#define TR_GPSSENSOR "GPS sensor" +#define TR_CURRENTSENSOR "Current sensor" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" #define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 9e1f0c6e3..aad06506c 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -899,6 +899,9 @@ #define TR_MODULE INDENT "Modul-Typ" #define TR_TELEMETRY_TYPE TR("Typ", "Telemetrytyp") #define TR_TELEMETRY_SENSORS "----Sensoren----" +#define TR_VALUE "Value" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Unit" #define TR_TELEMETRY_NEWSENSOR INDENT "Sensor hinzufügen ..." #define TR_CHANNELRANGE TR(INDENT "Kanäle", INDENT "Ausgangs Kanäle") //wg 9XR-Pro #define TR_LOWALARM INDENT "Vor-Alarm bei" @@ -1033,11 +1036,23 @@ #define TR_UNLOCKED "Entsperrt" #define TR_ID "ID" #define TR_PRECISION "Prezision" +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formula" +#define TR_CELLINDEX "Cell index" +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Alt sensor" +#define TR_CELLSENSOR "Cell sensor" +#define TR_GPSSENSOR "GPS sensor" +#define TR_CURRENTSENSOR "Current sensor" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" #define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index b3dfedc12..69dcc74fb 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -899,6 +899,9 @@ #define TR_MODULE INDENT "Module" #define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type") #define TR_TELEMETRY_SENSORS "Sensors" +#define TR_VALUE "Value" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Unit" #define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." #define TR_CHANNELRANGE TR(INDENT "Ch. Range", INDENT "Channel Range") #define TR_LOWALARM INDENT "Low Alarm" @@ -1033,11 +1036,23 @@ #define TR_UNLOCKED "Unlocked" #define TR_ID "ID" #define TR_PRECISION "Precision" +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formula" +#define TR_CELLINDEX "Cell index" +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Alt sensor" +#define TR_CELLSENSOR "Cell sensor" +#define TR_GPSSENSOR "GPS sensor" +#define TR_CURRENTSENSOR "Current sensor" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" #define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 1de9db987..0ff02f2bd 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -835,6 +835,9 @@ #define TR_MODULE INDENT "Modulo" #define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type") #define TR_TELEMETRY_SENSORS "Sensors" +#define TR_VALUE "Value" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Unit" #define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." #define TR_CHANNELRANGE INDENT "Gama de canales" #define TR_LOWALARM INDENT "Alarma baja" @@ -969,11 +972,23 @@ #define TR_UNLOCKED "Unlocked" #define TR_ID "ID" #define TR_PRECISION "Precision" +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formula" +#define TR_CELLINDEX "Cell index" +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Alt sensor" +#define TR_CELLSENSOR "Cell sensor" +#define TR_GPSSENSOR "GPS sensor" +#define TR_CURRENTSENSOR "Current sensor" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" #define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 3087948c5..a90fbce93 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -835,6 +835,9 @@ #define TR_MODULE INDENT "Module" #define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type") #define TR_TELEMETRY_SENSORS "Sensors" +#define TR_VALUE "Value" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Unit" #define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." #define TR_CHANNELRANGE INDENT "Channel Range" #define TR_LOWALARM INDENT "Low Alarm" @@ -969,11 +972,23 @@ #define TR_UNLOCKED "Avattu" #define TR_ID "ID" #define TR_PRECISION "Precision" +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formula" +#define TR_CELLINDEX "Cell index" +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Alt sensor" +#define TR_CELLSENSOR "Cell sensor" +#define TR_GPSSENSOR "GPS sensor" +#define TR_CURRENTSENSOR "Current sensor" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" #define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index c80ea4fe9..d6ed94fd2 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -319,7 +319,7 @@ #define TR_FSW_RESET_ROTENC #endif -#if LCD >= 212 +#if LCD_W >= 212 #define TR_FSW_RESET_TIMERS "Chrono 1\0 ""Chrono 2\0 ""Chrono 3\0 " #elif defined(CPUARM) #define TR_FSW_RESET_TIMERS "Chr1""Chr2""Chr3" @@ -860,7 +860,7 @@ #define TR_EXTERNALRF "HF externe" #define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Type failsafe") #define TR_FAILSAFESET "REGLAGES FAILSAFE" -#define TR_MENUSENSOR "SENSOR" +#define TR_MENUSENSOR "CAPTEUR" #define TR_COUNTRYCODE TR("Zone géo.","Zone géographique") #define TR_VOICELANG TR("Langue voix", "Langue annonces vocales") #define TR_UNITSSYSTEM "Unités" @@ -895,6 +895,9 @@ #define TR_MODULE INDENT "Type de module" #define TR_TELEMETRY_TYPE "Type télémesure" #define TR_TELEMETRY_SENSORS "Capteurs" +#define TR_VALUE "Valeur" +#define TR_TOPLCDTIMER "Timer LCD haut" +#define TR_UNIT "Unité" #define TR_TELEMETRY_NEWSENSOR INDENT "Ajout d'un nouveau capteur..." #define TR_CHANNELRANGE TR(INDENT "Canaux", INDENT "Plage de canaux") #define TR_LOWALARM INDENT "Alarme basse" @@ -1028,12 +1031,24 @@ #define TR_MODS_FORBIDDEN "Modifications désactivées!" #define TR_UNLOCKED "Déverrouillé" #define TR_ID "ID" -#define TR_PRECISION "Precision" +#define TR_PRECISION "Précision" +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formule" +#define TR_CELLINDEX "Index élem." +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Capteur Alt" +#define TR_CELLSENSOR "Capteur Elém" +#define TR_GPSSENSOR "Capteur GPS" +#define TR_CURRENTSENSOR "Capteur cour." #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" #define ZSTR_BATT "BtRx" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 5857d92ae..078325998 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -835,6 +835,9 @@ #define TR_MODULE INDENT "Modulo" #define TR_TELEMETRY_TYPE "Tipo Telemetria" #define TR_TELEMETRY_SENSORS "Sensors" +#define TR_VALUE "Value" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Unit" #define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." #define TR_CHANNELRANGE INDENT "Numero Canali" #define TR_LOWALARM INDENT "Allarme Basso" @@ -969,11 +972,23 @@ #define TR_UNLOCKED "Sbloccato" #define TR_ID "ID" #define TR_PRECISION "Precision" +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formula" +#define TR_CELLINDEX "Cell index" +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Alt sensor" +#define TR_CELLSENSOR "Cell sensor" +#define TR_GPSSENSOR "GPS sensor" +#define TR_CURRENTSENSOR "Current sensor" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" #define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 0a349d350..31f403dc8 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -833,6 +833,9 @@ #define TR_MODULE INDENT "Moduł" #define TR_TELEMETRY_TYPE "Typ Telemetri" #define TR_TELEMETRY_SENSORS "Czujniki" +#define TR_VALUE "Value" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Unit" #define TR_TELEMETRY_NEWSENSOR INDENT "Dodaj nowy czujnik..." #define TR_CHANNELRANGE TR(INDENT "ZakrKn",INDENT "Zakres kanału") #define TR_LOWALARM INDENT "Alarm niski" @@ -967,11 +970,23 @@ #define TR_UNLOCKED "Odblokowane" #define TR_ID "ID" #define TR_PRECISION "Precyzja " +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formula" +#define TR_CELLINDEX "Cell index" +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Alt sensor" +#define TR_CELLSENSOR "Cell sensor" +#define TR_GPSSENSOR "GPS sensor" +#define TR_CURRENTSENSOR "Current sensor" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" #define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index caf16a4e4..c018966c1 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -835,6 +835,9 @@ #define TR_MODULE INDENT "Module" #define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type") #define TR_TELEMETRY_SENSORS "Sensors" +#define TR_VALUE "Value" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Unit" #define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..." #define TR_CHANNELRANGE INDENT "Channel Range" #define TR_LOWALARM INDENT "Low Alarm" @@ -969,11 +972,23 @@ #define TR_UNLOCKED "Unlocked" #define TR_ID "ID" #define TR_PRECISION "Precision" +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formula" +#define TR_CELLINDEX "Cell index" +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Alt sensor" +#define TR_CELLSENSOR "Cell sensor" +#define TR_GPSSENSOR "GPS sensor" +#define TR_CURRENTSENSOR "Current sensor" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" #define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 447f40706..49569152c 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -835,6 +835,9 @@ #define TR_MODULE INDENT "Modul" #define TR_TELEMETRY_TYPE "Telemetrityp" #define TR_TELEMETRY_SENSORS "Sensorer" +#define TR_VALUE "Value" +#define TR_TOPLCDTIMER "Top LCD Timer" +#define TR_UNIT "Unit" #define TR_TELEMETRY_NEWSENSOR INDENT "Lägg till sensor..." #define TR_CHANNELRANGE INDENT "Kanalområde" #define TR_LOWALARM INDENT "Låg-alarm" @@ -969,11 +972,23 @@ #define TR_UNLOCKED "Olåst" #define TR_ID "ID" #define TR_PRECISION "Precision" +#define TR_RATIO "Ratio" +#define TR_FORMULA "Formula" +#define TR_CELLINDEX "Cell index" +#define TR_LOGS "Logs" +#define TR_OPTIONS "Options" + +#define TR_ALTSENSOR "Alt sensor" +#define TR_CELLSENSOR "Cell sensor" +#define TR_GPSSENSOR "GPS sensor" +#define TR_CURRENTSENSOR "Current sensor" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" #define ZSTR_A2 "A2" +#define ZSTR_A3 "A3" +#define ZSTR_A4 "A4" #define ZSTR_BATT "RxBt" #define ZSTR_ALT "Alt" #define ZSTR_TEMP "Temp" From d54a0389ea31852f259c3643748e987470c440ee Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 21 Mar 2015 00:20:27 +0400 Subject: [PATCH 023/100] Source list can now exceed 8bit range --- radio/src/gui/Taranis/lcd.cpp | 2 +- radio/src/gui/Taranis/lcd.h | 2 +- radio/src/gui/Taranis/menu_model_logical_switches.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/radio/src/gui/Taranis/lcd.cpp b/radio/src/gui/Taranis/lcd.cpp index e5a86bd78..42486bbd0 100755 --- a/radio/src/gui/Taranis/lcd.cpp +++ b/radio/src/gui/Taranis/lcd.cpp @@ -632,7 +632,7 @@ void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att) } #endif -void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att) +void putsMixerSource(coord_t x, coord_t y, uint32_t idx, LcdFlags att) { if (idx == 0) { lcd_putsiAtt(x, y, STR_VSRCRAW, 0, att); // TODO macro diff --git a/radio/src/gui/Taranis/lcd.h b/radio/src/gui/Taranis/lcd.h index 0b41ebf7c..4e32f776a 100755 --- a/radio/src/gui/Taranis/lcd.h +++ b/radio/src/gui/Taranis/lcd.h @@ -169,7 +169,7 @@ void putsStrIdx(coord_t x, coord_t y, const pm_char *str, uint8_t idx, LcdFlags void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att); void putsSwitches(coord_t x, coord_t y, int8_t swtch, LcdFlags att=0); void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0); -void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0); +void putsMixerSource(coord_t x, coord_t y, uint32_t idx, LcdFlags att=0); void putsFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att=0); #if !defined(BOOT) void putsCurveRef(coord_t x, coord_t y, CurveRef &curve, LcdFlags att); diff --git a/radio/src/gui/Taranis/menu_model_logical_switches.cpp b/radio/src/gui/Taranis/menu_model_logical_switches.cpp index 1d80e2f29..ba2eb9e88 100755 --- a/radio/src/gui/Taranis/menu_model_logical_switches.cpp +++ b/radio/src/gui/Taranis/menu_model_logical_switches.cpp @@ -163,7 +163,7 @@ void menuModelLogicalSwitches(uint8_t event) } } else if (cstate == LS_FAMILY_COMP) { - v1_val = (uint8_t)cs->v1; + v1_val = cs->v1; putsMixerSource(CSW_2ND_COLUMN, y, v1_val, attr1); putsMixerSource(CSW_3RD_COLUMN, y, cs->v2, attr2); INCDEC_SET_FLAG(EE_MODEL | INCDEC_SOURCE); @@ -178,7 +178,7 @@ void menuModelLogicalSwitches(uint8_t event) INCDEC_ENABLE_CHECK(NULL); } else { - v1_val = (uint8_t)cs->v1; + v1_val = cs->v1; putsMixerSource(CSW_2ND_COLUMN, y, v1_val, attr1); if (horz == 1) { INCDEC_SET_FLAG(EE_MODEL | INCDEC_SOURCE); From edb080903becd2bbeed12791b09c89f747cc3cab Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 21 Mar 2015 00:33:29 +0400 Subject: [PATCH 024/100] A-type SP2UART can also send analog values --- radio/src/telemetry/frsky.h | 2 -- radio/src/telemetry/frsky_sport.cpp | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 07c1b7dfc..19f4da929 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -135,8 +135,6 @@ #define RSSI_ID 0xf101 #define ADC1_ID 0xf102 #define ADC2_ID 0xf103 -#define ADC3_ID 0x0901 -#define ADC4_ID 0x0911 #define SP2UART_A_ID 0xfd00 #define SP2UART_B_ID 0xfd01 #define BATT_ID 0xf104 diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index e7fff5d58..6fe757915 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -61,8 +61,8 @@ const FrSkySportSensor sportSensors[] = { { SWR_ID, SWR_ID, ZSTR_SWR, UNIT_RAW, 0 }, { ADC1_ID, ADC1_ID, ZSTR_A1, UNIT_VOLTS, 1 }, { ADC2_ID, ADC2_ID, ZSTR_A2, UNIT_VOLTS, 1 }, - { ADC3_ID, ADC3_ID, ZSTR_A3, UNIT_VOLTS, 2 }, - { ADC4_ID, ADC4_ID, ZSTR_A4, UNIT_VOLTS, 2 }, + { A3_FIRST_ID, A3_LAST_ID, ZSTR_A3, UNIT_VOLTS, 2 }, + { A4_FIRST_ID, A4_LAST_ID, ZSTR_A4, UNIT_VOLTS, 2 }, { BATT_ID, BATT_ID, ZSTR_BATT, UNIT_VOLTS, 1 }, { T1_FIRST_ID, T2_LAST_ID, ZSTR_TEMP, UNIT_CELSIUS, 0 }, { RPM_FIRST_ID, RPM_LAST_ID, ZSTR_RPM, UNIT_RPMS, 0 }, From 4318d047072ea49db842ffbaba699807479f2ead Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 21 Mar 2015 11:12:19 +0400 Subject: [PATCH 025/100] Fix date adjustment, avoid setting time/date before GPS reception is good (GPS sends 0:0:0 0-0-0). Doesn't handle disconnection/reconnection of GPS module while radio is on, datetime.datestate and datetime.timestate should be reset when sensor is considered old --- radio/src/telemetry/telemetry.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 27b85dde7..3f1e5fced 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -52,12 +52,14 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin datetime.year = (uint16_t) ((data & 0xff000000) >> 24); datetime.month = (uint8_t) ((data & 0x00ff0000) >> 16); datetime.day = (uint8_t) ((data & 0x0000ff00) >> 8); - datetime.datestate = 1; - if (g_eeGeneral.adjustRTC) { + if (datetime.year != 0) { + datetime.datestate = 1; + } + if (g_eeGeneral.adjustRTC && (datetime.datestate == 1)) { struct gtm t; gettime(&t); - t.tm_year = datetime.year-1900; - t.tm_mon = datetime.month; + t.tm_year = datetime.year+4; + t.tm_mon = datetime.month-1; t.tm_mday = datetime.day; rtcSetTime(&t); } @@ -66,8 +68,10 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin datetime.hour = ((uint8_t) ((data & 0xff000000) >> 24) + g_eeGeneral.timezone + 24) % 24; datetime.min = (uint8_t) ((data & 0x00ff0000) >> 16); datetime.sec = (uint16_t) ((data & 0x0000ff00) >> 8); - datetime.timestate = 1; - if (g_eeGeneral.adjustRTC) { + if (datetime.datestate == 1) { + datetime.timestate = 1; + } + if (g_eeGeneral.adjustRTC && (datetime.datestate == 1)) { struct gtm t; gettime(&t); if (abs((t.tm_hour-datetime.hour)*3600 + (t.tm_min-datetime.min)*60 + (t.tm_sec-datetime.sec)) > 20) { From 7ab483d46944df1082c3a35e6bfd18dea32ea4e3 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 21 Mar 2015 11:13:29 +0400 Subject: [PATCH 026/100] Improve GPS date/time display --- radio/src/gui/Taranis/lcd.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/Taranis/lcd.cpp b/radio/src/gui/Taranis/lcd.cpp index 42486bbd0..e41ab8ed2 100755 --- a/radio/src/gui/Taranis/lcd.cpp +++ b/radio/src/gui/Taranis/lcd.cpp @@ -890,7 +890,12 @@ void displayDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags a lcd_outdezNAtt(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0|LEFT, 2); } else { - lcd_outdezNAtt(x, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2); + lcd_outdezNAtt(x, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2); + lcd_putcAtt(lcdLastPos-1, y, '-', att); + lcd_outdezNAtt(lcdNextPos, y, telemetryItem.datetime.month, att|LEFT, 2); + lcd_putcAtt(lcdLastPos-1, y, '-', att); + lcd_outdezAtt(lcdNextPos, y, telemetryItem.datetime.year, att|LEFT); + lcd_outdezNAtt(lcdNextPos+FW+1, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2); lcd_putcAtt(lcdLastPos, y, ':', att); lcd_outdezNAtt(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0|LEFT, 2); lcd_putcAtt(lcdLastPos, y, ':', att); From 609f701f90710fb9976512d507e5531519432ed6 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 21 Mar 2015 12:30:12 +0400 Subject: [PATCH 027/100] Time/date marked as invalid when sensor is old --- radio/src/telemetry/frsky.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 046921ce0..16586f305 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -357,6 +357,11 @@ void telemetryWakeup() uint8_t lastReceived = telemetryItems[i].lastReceived; if (lastReceived < TELEMETRY_VALUE_TIMER_CYCLE && uint8_t(now - lastReceived) > TELEMETRY_VALUE_OLD_THRESHOLD) { telemetryItems[i].lastReceived = TELEMETRY_VALUE_OLD; + TelemetrySensor * sensor = & g_model.telemetrySensors[i]; + if (sensor->unit == UNIT_DATETIME) { + telemetryItems[i].datetime.datestate = 0; + telemetryItems[i].datetime.timestate = 0; + } } } } From 1b5543698b57b6a705d0c40e1cfe85d9c63095b8 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 21 Mar 2015 17:41:58 +0400 Subject: [PATCH 028/100] Fix X9E clocks --- radio/src/Makefile | 2 +- .../Source/Templates/system_stm32f4xx.c | 707 ++---------------- 2 files changed, 68 insertions(+), 641 deletions(-) diff --git a/radio/src/Makefile b/radio/src/Makefile index bcc830620..07b11225b 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -852,7 +852,7 @@ ifeq ($(PCB), TARANIS) INCDIRS += targets/taranis $(THIRDPARTY) $(COOSDIR) $(COOSDIR)/kernel $(COOSDIR)/portable ifeq ($(PCBREV), REV9E) STM32LIBPATH = $(THIRDPARTY)/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries - CPPDEFS += -DHSE_VALUE=16800000 + CPPDEFS += -DHSE_VALUE=12000000 CPPDEFS += -DSTM32F40_41xxx EXTRAINCDIRS += $(STM32LIBPATH)/CMSIS/Device/ST/STM32F4xx/Include $(STM32LIBPATH)/CMSIS/Include $(STM32LIBPATH)/STM32F4xx_StdPeriph_Driver/inc else diff --git a/radio/src/thirdparty/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c b/radio/src/thirdparty/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c index 3df57c99b..2de3abef6 100644 --- a/radio/src/thirdparty/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c +++ b/radio/src/thirdparty/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c @@ -2,10 +2,12 @@ ****************************************************************************** * @file system_stm32f4xx.c * @author MCD Application Team - * @version V1.4.0 - * @date 04-August-2014 + * @version V1.1.0 + * @date 21-March-2015 * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File. - * This file contains the system clock configuration for STM32F4xx devices. + * This file contains the system clock configuration for STM32F4xx devices, + * and is generated by the clock configuration tool + * stm32f4xx_Clock_Configuration_V1.1.0.xls * * 1. This file provides two functions and one global variable to be called from * user application: @@ -40,7 +42,7 @@ * 5. This file configures the system clock as follows: *============================================================================= *============================================================================= - * Supported STM32F40xxx/41xxx devices + * Supported STM32F40xx/41xx/427x/437x devices *----------------------------------------------------------------------------- * System Clock source | PLL (HSE) *----------------------------------------------------------------------------- @@ -54,9 +56,9 @@ *----------------------------------------------------------------------------- * APB2 Prescaler | 2 *----------------------------------------------------------------------------- - * HSE Frequency(Hz) | 25000000 + * HSE Frequency(Hz) | 12000000 *----------------------------------------------------------------------------- - * PLL_M | 25 + * PLL_M | 12 *----------------------------------------------------------------------------- * PLL_N | 336 *----------------------------------------------------------------------------- @@ -82,152 +84,11 @@ *----------------------------------------------------------------------------- * Data cache | ON *----------------------------------------------------------------------------- - * Require 48MHz for USB OTG FS, | Disabled + * Require 48MHz for USB OTG FS, | Enabled * SDIO and RNG clock | *----------------------------------------------------------------------------- *============================================================================= - *============================================================================= - * Supported STM32F42xxx/43xxx devices - *----------------------------------------------------------------------------- - * System Clock source | PLL (HSE) - *----------------------------------------------------------------------------- - * SYSCLK(Hz) | 180000000 - *----------------------------------------------------------------------------- - * HCLK(Hz) | 180000000 - *----------------------------------------------------------------------------- - * AHB Prescaler | 1 - *----------------------------------------------------------------------------- - * APB1 Prescaler | 4 - *----------------------------------------------------------------------------- - * APB2 Prescaler | 2 - *----------------------------------------------------------------------------- - * HSE Frequency(Hz) | 25000000 - *----------------------------------------------------------------------------- - * PLL_M | 25 - *----------------------------------------------------------------------------- - * PLL_N | 360 - *----------------------------------------------------------------------------- - * PLL_P | 2 - *----------------------------------------------------------------------------- - * PLL_Q | 7 - *----------------------------------------------------------------------------- - * PLLI2S_N | NA - *----------------------------------------------------------------------------- - * PLLI2S_R | NA - *----------------------------------------------------------------------------- - * I2S input clock | NA - *----------------------------------------------------------------------------- - * VDD(V) | 3.3 - *----------------------------------------------------------------------------- - * Main regulator output voltage | Scale1 mode - *----------------------------------------------------------------------------- - * Flash Latency(WS) | 5 - *----------------------------------------------------------------------------- - * Prefetch Buffer | ON - *----------------------------------------------------------------------------- - * Instruction cache | ON - *----------------------------------------------------------------------------- - * Data cache | ON - *----------------------------------------------------------------------------- - * Require 48MHz for USB OTG FS, | Disabled - * SDIO and RNG clock | - *----------------------------------------------------------------------------- - *============================================================================= - *============================================================================= - * Supported STM32F401xx devices - *----------------------------------------------------------------------------- - * System Clock source | PLL (HSE) - *----------------------------------------------------------------------------- - * SYSCLK(Hz) | 84000000 - *----------------------------------------------------------------------------- - * HCLK(Hz) | 84000000 - *----------------------------------------------------------------------------- - * AHB Prescaler | 1 - *----------------------------------------------------------------------------- - * APB1 Prescaler | 2 - *----------------------------------------------------------------------------- - * APB2 Prescaler | 1 - *----------------------------------------------------------------------------- - * HSE Frequency(Hz) | 25000000 - *----------------------------------------------------------------------------- - * PLL_M | 25 - *----------------------------------------------------------------------------- - * PLL_N | 336 - *----------------------------------------------------------------------------- - * PLL_P | 4 - *----------------------------------------------------------------------------- - * PLL_Q | 7 - *----------------------------------------------------------------------------- - * PLLI2S_N | NA - *----------------------------------------------------------------------------- - * PLLI2S_R | NA - *----------------------------------------------------------------------------- - * I2S input clock | NA - *----------------------------------------------------------------------------- - * VDD(V) | 3.3 - *----------------------------------------------------------------------------- - * Main regulator output voltage | Scale1 mode - *----------------------------------------------------------------------------- - * Flash Latency(WS) | 2 - *----------------------------------------------------------------------------- - * Prefetch Buffer | ON - *----------------------------------------------------------------------------- - * Instruction cache | ON - *----------------------------------------------------------------------------- - * Data cache | ON - *----------------------------------------------------------------------------- - * Require 48MHz for USB OTG FS, | Disabled - * SDIO and RNG clock | - *----------------------------------------------------------------------------- - *============================================================================= - *============================================================================= - * Supported STM32F411xx devices - *----------------------------------------------------------------------------- - * System Clock source | PLL (HSI) - *----------------------------------------------------------------------------- - * SYSCLK(Hz) | 100000000 - *----------------------------------------------------------------------------- - * HCLK(Hz) | 100000000 - *----------------------------------------------------------------------------- - * AHB Prescaler | 1 - *----------------------------------------------------------------------------- - * APB1 Prescaler | 2 - *----------------------------------------------------------------------------- - * APB2 Prescaler | 1 - *----------------------------------------------------------------------------- - * HSI Frequency(Hz) | 16000000 - *----------------------------------------------------------------------------- - * PLL_M | 16 - *----------------------------------------------------------------------------- - * PLL_N | 400 - *----------------------------------------------------------------------------- - * PLL_P | 4 - *----------------------------------------------------------------------------- - * PLL_Q | 7 - *----------------------------------------------------------------------------- - * PLLI2S_N | NA - *----------------------------------------------------------------------------- - * PLLI2S_R | NA - *----------------------------------------------------------------------------- - * I2S input clock | NA - *----------------------------------------------------------------------------- - * VDD(V) | 3.3 - *----------------------------------------------------------------------------- - * Main regulator output voltage | Scale1 mode - *----------------------------------------------------------------------------- - * Flash Latency(WS) | 3 - *----------------------------------------------------------------------------- - * Prefetch Buffer | ON - *----------------------------------------------------------------------------- - * Instruction cache | ON - *----------------------------------------------------------------------------- - * Data cache | ON - *----------------------------------------------------------------------------- - * Require 48MHz for USB OTG FS, | Disabled - * SDIO and RNG clock | - *----------------------------------------------------------------------------- - *============================================================================= - ****************************************************************************** + ****************************************************************************** * @attention * *

© COPYRIGHT 2013 STMicroelectronics

@@ -278,31 +139,10 @@ */ /************************* Miscellaneous Configuration ************************/ -/*!< Uncomment the following line if you need to use external SRAM or SDRAM mounted - on STM324xG_EVAL/STM324x7I_EVAL/STM324x9I_EVAL boards as data memory */ -#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) +/*!< Uncomment the following line if you need to use external SRAM mounted + on STM324xG_EVAL/STM324x7I_EVAL board as data memory */ /* #define DATA_IN_ExtSRAM */ -#endif /* STM32F40_41xxx || STM32F427_437x || STM32F429_439xx */ -#if defined (STM32F427_437xx) || defined (STM32F429_439xx) -/* #define DATA_IN_ExtSDRAM */ -#endif /* STM32F427_437x || STM32F429_439xx */ - -#if defined (STM32F411xE) -/*!< Uncomment the following line if you need to clock the STM32F411xE by HSE Bypass - through STLINK MCO pin of STM32F103 microcontroller. The frequency cannot be changed - and is fixed at 8 MHz. - Hardware configuration needed for Nucleo Board: - � SB54, SB55 OFF - � R35 removed - � SB16, SB50 ON */ -/* #define USE_HSE_BYPASS */ - -#if defined (USE_HSE_BYPASS) -#define HSE_BYPASS_INPUT_FREQUENCY 8000000 -#endif /* USE_HSE_BYPASS */ -#endif /* STM32F411xE */ - /*!< Uncomment the following line if you need to relocate your vector Table in Internal SRAM. */ /* #define VECT_TAB_SRAM */ @@ -311,48 +151,16 @@ /******************************************************************************/ /************************* PLL Parameters *************************************/ -#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx) /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */ -#if defined(REV9E) #define PLL_M 12 -#else -#define PLL_M 25 -#endif -#else /* STM32F411xE */ -#if defined (USE_HSE_BYPASS) -#define PLL_M 8 -#else /* STM32F411xE */ -#define PLL_M 16 -#endif /* USE_HSE_BYPASS */ -#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */ +#define PLL_N 336 + +/* SYSCLK = PLL_VCO / PLL_P */ +#define PLL_P 2 /* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */ #define PLL_Q 7 -#if defined (STM32F40_41xxx) -#define PLL_N 336 -/* SYSCLK = PLL_VCO / PLL_P */ -#define PLL_P 2 -#endif /* STM32F40_41xxx */ - -#if defined (STM32F427_437xx) || defined (STM32F429_439xx) -#define PLL_N 360 -/* SYSCLK = PLL_VCO / PLL_P */ -#define PLL_P 2 -#endif /* STM32F427_437x || STM32F429_439xx */ - -#if defined (STM32F401xx) -#define PLL_N 336 -/* SYSCLK = PLL_VCO / PLL_P */ -#define PLL_P 4 -#endif /* STM32F401xx */ - -#if defined (STM32F411xE) -#define PLL_N 400 -/* SYSCLK = PLL_VCO / PLL_P */ -#define PLL_P 4 -#endif /* STM32F411xx */ - /******************************************************************************/ /** @@ -371,23 +179,9 @@ * @{ */ -#if defined (STM32F40_41xxx) uint32_t SystemCoreClock = 168000000; -#endif /* STM32F40_41xxx */ -#if defined (STM32F427_437xx) || defined (STM32F429_439xx) - uint32_t SystemCoreClock = 180000000; -#endif /* STM32F427_437x || STM32F429_439xx */ - -#if defined (STM32F401xx) - uint32_t SystemCoreClock = 84000000; -#endif /* STM32F401xx */ - -#if defined (STM32F411xE) - uint32_t SystemCoreClock = 100000000; -#endif /* STM32F401xx */ - -__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + __I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; /** * @} @@ -398,10 +192,9 @@ __I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9} */ static void SetSysClock(void); - -#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM) -static void SystemInit_ExtMemCtl(void); -#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */ +#ifdef DATA_IN_ExtSRAM + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ /** * @} @@ -443,9 +236,9 @@ void SystemInit(void) /* Disable all interrupts */ RCC->CIR = 0x00000000; -#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM) +#ifdef DATA_IN_ExtSRAM SystemInit_ExtMemCtl(); -#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */ +#endif /* DATA_IN_ExtSRAM */ /* Configure the System clock source, PLL Multiplier and Divider factors, AHB/APBx prescalers and Flash settings ----------------------------------*/ @@ -513,13 +306,13 @@ void SystemCoreClockUpdate(void) SystemCoreClock = HSE_VALUE; break; case 0x08: /* PLL used as system clock source */ - /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N SYSCLK = PLL_VCO / PLL_P */ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; -#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx) if (pllsource != 0) { /* HSE used as PLL clock source */ @@ -530,23 +323,9 @@ void SystemCoreClockUpdate(void) /* HSI used as PLL clock source */ pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); } -#elif defined (STM32F411xE) -#if defined (USE_HSE_BYPASS) - if (pllsource != 0) - { - /* HSE used as PLL clock source */ - pllvco = (HSE_BYPASS_INPUT_FREQUENCY / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); - } -#else - if (pllsource == 0) - { - /* HSI used as PLL clock source */ - pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); - } -#endif /* USE_HSE_BYPASS */ -#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */ + pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; - SystemCoreClock = pllvco/pllp; + SystemCoreClock = pllvco/pllp; break; default: SystemCoreClock = HSI_VALUE; @@ -569,7 +348,6 @@ void SystemCoreClockUpdate(void) */ static void SetSysClock(void) { -#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx) /******************************************************************************/ /* PLL (clocked by HSE) used as System clock source */ /******************************************************************************/ @@ -596,29 +374,19 @@ static void SetSysClock(void) if (HSEStatus == (uint32_t)0x01) { - /* Select regulator voltage output Scale 1 mode */ + /* Select regulator voltage output Scale 1 mode, System frequency up to 168 MHz */ RCC->APB1ENR |= RCC_APB1ENR_PWREN; PWR->CR |= PWR_CR_VOS; /* HCLK = SYSCLK / 1*/ RCC->CFGR |= RCC_CFGR_HPRE_DIV1; - -#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) + /* PCLK2 = HCLK / 2*/ RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; /* PCLK1 = HCLK / 4*/ RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; -#endif /* STM32F40_41xxx || STM32F427_437x || STM32F429_439xx */ -#if defined (STM32F401xx) - /* PCLK2 = HCLK / 2*/ - RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; - - /* PCLK1 = HCLK / 4*/ - RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; -#endif /* STM32F401xx */ - /* Configure the main PLL */ RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) | (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24); @@ -631,29 +399,8 @@ static void SetSysClock(void) { } -#if defined (STM32F427_437xx) || defined (STM32F429_439xx) - /* Enable the Over-drive to extend the clock frequency to 180 Mhz */ - PWR->CR |= PWR_CR_ODEN; - while((PWR->CSR & PWR_CSR_ODRDY) == 0) - { - } - PWR->CR |= PWR_CR_ODSWEN; - while((PWR->CSR & PWR_CSR_ODSWRDY) == 0) - { - } /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ - FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS; -#endif /* STM32F427_437x || STM32F429_439xx */ - -#if defined (STM32F40_41xxx) - /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ - FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS; -#endif /* STM32F40_41xxx */ - -#if defined (STM32F401xx) - /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ - FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_2WS; -#endif /* STM32F401xx */ + FLASH->ACR = FLASH_ACR_PRFTEN |FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS; /* Select the main PLL as system clock source */ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); @@ -668,113 +415,7 @@ static void SetSysClock(void) { /* If HSE fails to start-up, the application will have wrong clock configuration. User can add here some code to deal with this error */ } -#elif defined (STM32F411xE) -#if defined (USE_HSE_BYPASS) -/******************************************************************************/ -/* PLL (clocked by HSE) used as System clock source */ -/******************************************************************************/ - __IO uint32_t StartUpCounter = 0, HSEStatus = 0; - - /* Enable HSE and HSE BYPASS */ - RCC->CR |= ((uint32_t)RCC_CR_HSEON | RCC_CR_HSEBYP); - - /* Wait till HSE is ready and if Time out is reached exit */ - do - { - HSEStatus = RCC->CR & RCC_CR_HSERDY; - StartUpCounter++; - } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); - if ((RCC->CR & RCC_CR_HSERDY) != RESET) - { - HSEStatus = (uint32_t)0x01; - } - else - { - HSEStatus = (uint32_t)0x00; - } - - if (HSEStatus == (uint32_t)0x01) - { - /* Select regulator voltage output Scale 1 mode */ - RCC->APB1ENR |= RCC_APB1ENR_PWREN; - PWR->CR |= PWR_CR_VOS; - - /* HCLK = SYSCLK / 1*/ - RCC->CFGR |= RCC_CFGR_HPRE_DIV1; - - /* PCLK2 = HCLK / 2*/ - RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; - - /* PCLK1 = HCLK / 4*/ - RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; - - /* Configure the main PLL */ - RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) | - (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24); - - /* Enable the main PLL */ - RCC->CR |= RCC_CR_PLLON; - - /* Wait till the main PLL is ready */ - while((RCC->CR & RCC_CR_PLLRDY) == 0) - { - } - - /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ - FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_2WS; - - /* Select the main PLL as system clock source */ - RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); - RCC->CFGR |= RCC_CFGR_SW_PLL; - - /* Wait till the main PLL is used as system clock source */ - while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL); - { - } - } - else - { /* If HSE fails to start-up, the application will have wrong clock - configuration. User can add here some code to deal with this error */ - } -#else /* HSI will be used as PLL clock source */ - /* Select regulator voltage output Scale 1 mode */ - RCC->APB1ENR |= RCC_APB1ENR_PWREN; - PWR->CR |= PWR_CR_VOS; - - /* HCLK = SYSCLK / 1*/ - RCC->CFGR |= RCC_CFGR_HPRE_DIV1; - - /* PCLK2 = HCLK / 2*/ - RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; - - /* PCLK1 = HCLK / 4*/ - RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; - - /* Configure the main PLL */ - RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) | (PLL_Q << 24); - - /* Enable the main PLL */ - RCC->CR |= RCC_CR_PLLON; - - /* Wait till the main PLL is ready */ - while((RCC->CR & RCC_CR_PLLRDY) == 0) - { - } - - /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ - FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_2WS; - - /* Select the main PLL as system clock source */ - RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); - RCC->CFGR |= RCC_CFGR_SW_PLL; - - /* Wait till the main PLL is used as system clock source */ - while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL); - { - } -#endif /* USE_HSE_BYPASS */ -#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */ } /** @@ -787,7 +428,7 @@ static void SetSysClock(void) /** * @brief Setup the external memory controller. * Called in startup_stm32f4xx.s before jump to main. - * This function configures the external SRAM mounted on STM324xG_EVAL/STM324x7I boards + * This function configures the external SRAM mounted on STM324xG_EVAL/STM324x7I_EVAL board * This SRAM will be used as program data memory (including heap and stack). * @param None * @retval None @@ -796,28 +437,31 @@ void SystemInit_ExtMemCtl(void) { /*-- GPIOs Configuration -----------------------------------------------------*/ /* - +-------------------+--------------------+------------------+--------------+ - + SRAM pins assignment + - +-------------------+--------------------+------------------+--------------+ - | PD0 <-> FMC_D2 | PE0 <-> FMC_NBL0 | PF0 <-> FMC_A0 | PG0 <-> FMC_A10 | - | PD1 <-> FMC_D3 | PE1 <-> FMC_NBL1 | PF1 <-> FMC_A1 | PG1 <-> FMC_A11 | - | PD4 <-> FMC_NOE | PE3 <-> FMC_A19 | PF2 <-> FMC_A2 | PG2 <-> FMC_A12 | - | PD5 <-> FMC_NWE | PE4 <-> FMC_A20 | PF3 <-> FMC_A3 | PG3 <-> FMC_A13 | - | PD8 <-> FMC_D13 | PE7 <-> FMC_D4 | PF4 <-> FMC_A4 | PG4 <-> FMC_A14 | - | PD9 <-> FMC_D14 | PE8 <-> FMC_D5 | PF5 <-> FMC_A5 | PG5 <-> FMC_A15 | - | PD10 <-> FMC_D15 | PE9 <-> FMC_D6 | PF12 <-> FMC_A6 | PG9 <-> FMC_NE2 | - | PD11 <-> FMC_A16 | PE10 <-> FMC_D7 | PF13 <-> FMC_A7 |-----------------+ - | PD12 <-> FMC_A17 | PE11 <-> FMC_D8 | PF14 <-> FMC_A8 | - | PD13 <-> FMC_A18 | PE12 <-> FMC_D9 | PF15 <-> FMC_A9 | - | PD14 <-> FMC_D0 | PE13 <-> FMC_D10 |-----------------+ - | PD15 <-> FMC_D1 | PE14 <-> FMC_D11 | - | | PE15 <-> FMC_D12 | - +------------------+------------------+ + +-------------------+--------------------+------------------+------------------+ + + SRAM pins assignment + + +-------------------+--------------------+------------------+------------------+ + | PD0 <-> FSMC_D2 | PE0 <-> FSMC_NBL0 | PF0 <-> FSMC_A0 | PG0 <-> FSMC_A10 | + | PD1 <-> FSMC_D3 | PE1 <-> FSMC_NBL1 | PF1 <-> FSMC_A1 | PG1 <-> FSMC_A11 | + | PD4 <-> FSMC_NOE | PE2 <-> FSMC_A23 | PF2 <-> FSMC_A2 | PG2 <-> FSMC_A12 | + | PD5 <-> FSMC_NWE | PE3 <-> FSMC_A19 | PF3 <-> FSMC_A3 | PG3 <-> FSMC_A13 | + | PD8 <-> FSMC_D13 | PE4 <-> FSMC_A20 | PF4 <-> FSMC_A4 | PG4 <-> FSMC_A14 | + | PD9 <-> FSMC_D14 | PE5 <-> FSMC_A21 | PF5 <-> FSMC_A5 | PG5 <-> FSMC_A15 | + | PD10 <-> FSMC_D15 | PE6 <-> FSMC_A22 | PF12 <-> FSMC_A6 | PG9 <-> FSMC_NE2 | + | PD11 <-> FSMC_A16 | PE7 <-> FSMC_D4 | PF13 <-> FSMC_A7 |------------------+ + | PD12 <-> FSMC_A17 | PE8 <-> FSMC_D5 | PF14 <-> FSMC_A8 | + | PD13 <-> FSMC_A18 | PE9 <-> FSMC_D6 | PF15 <-> FSMC_A9 | + | PD14 <-> FSMC_D0 | PE10 <-> FSMC_D7 |------------------+ + | PD15 <-> FSMC_D1 | PE11 <-> FSMC_D8 | + +-------------------| PE12 <-> FSMC_D9 | + | PE13 <-> FSMC_D10 | + | PE14 <-> FSMC_D11 | + | PE15 <-> FSMC_D12 | + +--------------------+ */ /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */ RCC->AHB1ENR |= 0x00000078; - /* Connect PDx pins to FMC Alternate function */ + /* Connect PDx pins to FSMC Alternate function */ GPIOD->AFR[0] = 0x00cc00cc; GPIOD->AFR[1] = 0xcccccccc; /* Configure PDx pins in Alternate function mode */ @@ -829,7 +473,7 @@ void SystemInit_ExtMemCtl(void) /* No pull-up, pull-down for PDx pins */ GPIOD->PUPDR = 0x00000000; - /* Connect PEx pins to FMC Alternate function */ + /* Connect PEx pins to FSMC Alternate function */ GPIOE->AFR[0] = 0xcccccccc; GPIOE->AFR[1] = 0xcccccccc; /* Configure PEx pins in Alternate function mode */ @@ -841,7 +485,7 @@ void SystemInit_ExtMemCtl(void) /* No pull-up, pull-down for PEx pins */ GPIOE->PUPDR = 0x00000000; - /* Connect PFx pins to FMC Alternate function */ + /* Connect PFx pins to FSMC Alternate function */ GPIOF->AFR[0] = 0x00cccccc; GPIOF->AFR[1] = 0xcccc0000; /* Configure PFx pins in Alternate function mode */ @@ -853,7 +497,7 @@ void SystemInit_ExtMemCtl(void) /* No pull-up, pull-down for PFx pins */ GPIOF->PUPDR = 0x00000000; - /* Connect PGx pins to FMC Alternate function */ + /* Connect PGx pins to FSMC Alternate function */ GPIOG->AFR[0] = 0x00cccccc; GPIOG->AFR[1] = 0x000000c0; /* Configure PGx pins in Alternate function mode */ @@ -865,34 +509,24 @@ void SystemInit_ExtMemCtl(void) /* No pull-up, pull-down for PGx pins */ GPIOG->PUPDR = 0x00000000; -/*-- FMC Configuration ------------------------------------------------------*/ - /* Enable the FMC/FSMC interface clock */ +/*-- FSMC Configuration ------------------------------------------------------*/ + /* Enable the FSMC interface clock */ RCC->AHB3ENR |= 0x00000001; - -#if defined (STM32F427_437xx) || defined (STM32F429_439xx) - /* Configure and enable Bank1_SRAM2 */ - FMC_Bank1->BTCR[2] = 0x00001011; - FMC_Bank1->BTCR[3] = 0x00000201; - FMC_Bank1E->BWTR[2] = 0x0fffffff; -#endif /* STM32F427_437xx || STM32F429_439xx */ -#if defined (STM32F40_41xxx) /* Configure and enable Bank1_SRAM2 */ FSMC_Bank1->BTCR[2] = 0x00001011; FSMC_Bank1->BTCR[3] = 0x00000201; FSMC_Bank1E->BWTR[2] = 0x0fffffff; -#endif /* STM32F40_41xxx */ - /* Bank1_SRAM2 is configured as follow: - In case of FSMC configuration - NORSRAMTimingStructure.FSMC_AddressSetupTime = 1; - NORSRAMTimingStructure.FSMC_AddressHoldTime = 0; - NORSRAMTimingStructure.FSMC_DataSetupTime = 2; - NORSRAMTimingStructure.FSMC_BusTurnAroundDuration = 0; - NORSRAMTimingStructure.FSMC_CLKDivision = 0; - NORSRAMTimingStructure.FSMC_DataLatency = 0; - NORSRAMTimingStructure.FSMC_AccessMode = FMC_AccessMode_A; + + p.FSMC_AddressSetupTime = 1; + p.FSMC_AddressHoldTime = 0; + p.FSMC_DataSetupTime = 2; + p.FSMC_BusTurnAroundDuration = 0; + p.FSMC_CLKDivision = 0; + p.FSMC_DataLatency = 0; + p.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM2; FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; @@ -907,219 +541,11 @@ void SystemInit_ExtMemCtl(void) FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; - FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &NORSRAMTimingStructure; - FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &NORSRAMTimingStructure; - - In case of FMC configuration - NORSRAMTimingStructure.FMC_AddressSetupTime = 1; - NORSRAMTimingStructure.FMC_AddressHoldTime = 0; - NORSRAMTimingStructure.FMC_DataSetupTime = 2; - NORSRAMTimingStructure.FMC_BusTurnAroundDuration = 0; - NORSRAMTimingStructure.FMC_CLKDivision = 0; - NORSRAMTimingStructure.FMC_DataLatency = 0; - NORSRAMTimingStructure.FMC_AccessMode = FMC_AccessMode_A; - - FMC_NORSRAMInitStructure.FMC_Bank = FMC_Bank1_NORSRAM2; - FMC_NORSRAMInitStructure.FMC_DataAddressMux = FMC_DataAddressMux_Disable; - FMC_NORSRAMInitStructure.FMC_MemoryType = FMC_MemoryType_SRAM; - FMC_NORSRAMInitStructure.FMC_MemoryDataWidth = FMC_MemoryDataWidth_16b; - FMC_NORSRAMInitStructure.FMC_BurstAccessMode = FMC_BurstAccessMode_Disable; - FMC_NORSRAMInitStructure.FMC_AsynchronousWait = FMC_AsynchronousWait_Disable; - FMC_NORSRAMInitStructure.FMC_WaitSignalPolarity = FMC_WaitSignalPolarity_Low; - FMC_NORSRAMInitStructure.FMC_WrapMode = FMC_WrapMode_Disable; - FMC_NORSRAMInitStructure.FMC_WaitSignalActive = FMC_WaitSignalActive_BeforeWaitState; - FMC_NORSRAMInitStructure.FMC_WriteOperation = FMC_WriteOperation_Enable; - FMC_NORSRAMInitStructure.FMC_WaitSignal = FMC_WaitSignal_Disable; - FMC_NORSRAMInitStructure.FMC_ExtendedMode = FMC_ExtendedMode_Disable; - FMC_NORSRAMInitStructure.FMC_WriteBurst = FMC_WriteBurst_Disable; - FMC_NORSRAMInitStructure.FMC_ContinousClock = FMC_CClock_SyncOnly; - FMC_NORSRAMInitStructure.FMC_ReadWriteTimingStruct = &NORSRAMTimingStructure; - FMC_NORSRAMInitStructure.FMC_WriteTimingStruct = &NORSRAMTimingStructure; + FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; + FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; */ - } #endif /* DATA_IN_ExtSRAM */ - -#ifdef DATA_IN_ExtSDRAM -/** - * @brief Setup the external memory controller. - * Called in startup_stm32f4xx.s before jump to main. - * This function configures the external SDRAM mounted on STM324x9I_EVAL board - * This SDRAM will be used as program data memory (including heap and stack). - * @param None - * @retval None - */ -void SystemInit_ExtMemCtl(void) -{ - register uint32_t tmpreg = 0, timeout = 0xFFFF; - register uint32_t index; - - /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface - clock */ - RCC->AHB1ENR |= 0x000001FC; - - /* Connect PCx pins to FMC Alternate function */ - GPIOC->AFR[0] = 0x0000000c; - GPIOC->AFR[1] = 0x00007700; - /* Configure PCx pins in Alternate function mode */ - GPIOC->MODER = 0x00a00002; - /* Configure PCx pins speed to 50 MHz */ - GPIOC->OSPEEDR = 0x00a00002; - /* Configure PCx pins Output type to push-pull */ - GPIOC->OTYPER = 0x00000000; - /* No pull-up, pull-down for PCx pins */ - GPIOC->PUPDR = 0x00500000; - - /* Connect PDx pins to FMC Alternate function */ - GPIOD->AFR[0] = 0x000000CC; - GPIOD->AFR[1] = 0xCC000CCC; - /* Configure PDx pins in Alternate function mode */ - GPIOD->MODER = 0xA02A000A; - /* Configure PDx pins speed to 50 MHz */ - GPIOD->OSPEEDR = 0xA02A000A; - /* Configure PDx pins Output type to push-pull */ - GPIOD->OTYPER = 0x00000000; - /* No pull-up, pull-down for PDx pins */ - GPIOD->PUPDR = 0x00000000; - - /* Connect PEx pins to FMC Alternate function */ - GPIOE->AFR[0] = 0xC00000CC; - GPIOE->AFR[1] = 0xCCCCCCCC; - /* Configure PEx pins in Alternate function mode */ - GPIOE->MODER = 0xAAAA800A; - /* Configure PEx pins speed to 50 MHz */ - GPIOE->OSPEEDR = 0xAAAA800A; - /* Configure PEx pins Output type to push-pull */ - GPIOE->OTYPER = 0x00000000; - /* No pull-up, pull-down for PEx pins */ - GPIOE->PUPDR = 0x00000000; - - /* Connect PFx pins to FMC Alternate function */ - GPIOF->AFR[0] = 0xcccccccc; - GPIOF->AFR[1] = 0xcccccccc; - /* Configure PFx pins in Alternate function mode */ - GPIOF->MODER = 0xAA800AAA; - /* Configure PFx pins speed to 50 MHz */ - GPIOF->OSPEEDR = 0xAA800AAA; - /* Configure PFx pins Output type to push-pull */ - GPIOF->OTYPER = 0x00000000; - /* No pull-up, pull-down for PFx pins */ - GPIOF->PUPDR = 0x00000000; - - /* Connect PGx pins to FMC Alternate function */ - GPIOG->AFR[0] = 0xcccccccc; - GPIOG->AFR[1] = 0xcccccccc; - /* Configure PGx pins in Alternate function mode */ - GPIOG->MODER = 0xaaaaaaaa; - /* Configure PGx pins speed to 50 MHz */ - GPIOG->OSPEEDR = 0xaaaaaaaa; - /* Configure PGx pins Output type to push-pull */ - GPIOG->OTYPER = 0x00000000; - /* No pull-up, pull-down for PGx pins */ - GPIOG->PUPDR = 0x00000000; - - /* Connect PHx pins to FMC Alternate function */ - GPIOH->AFR[0] = 0x00C0CC00; - GPIOH->AFR[1] = 0xCCCCCCCC; - /* Configure PHx pins in Alternate function mode */ - GPIOH->MODER = 0xAAAA08A0; - /* Configure PHx pins speed to 50 MHz */ - GPIOH->OSPEEDR = 0xAAAA08A0; - /* Configure PHx pins Output type to push-pull */ - GPIOH->OTYPER = 0x00000000; - /* No pull-up, pull-down for PHx pins */ - GPIOH->PUPDR = 0x00000000; - - /* Connect PIx pins to FMC Alternate function */ - GPIOI->AFR[0] = 0xCCCCCCCC; - GPIOI->AFR[1] = 0x00000CC0; - /* Configure PIx pins in Alternate function mode */ - GPIOI->MODER = 0x0028AAAA; - /* Configure PIx pins speed to 50 MHz */ - GPIOI->OSPEEDR = 0x0028AAAA; - /* Configure PIx pins Output type to push-pull */ - GPIOI->OTYPER = 0x00000000; - /* No pull-up, pull-down for PIx pins */ - GPIOI->PUPDR = 0x00000000; - -/*-- FMC Configuration ------------------------------------------------------*/ - /* Enable the FMC interface clock */ - RCC->AHB3ENR |= 0x00000001; - - /* Configure and enable SDRAM bank1 */ - FMC_Bank5_6->SDCR[0] = 0x000039D0; - FMC_Bank5_6->SDTR[0] = 0x01115351; - - /* SDRAM initialization sequence */ - /* Clock enable command */ - FMC_Bank5_6->SDCMR = 0x00000011; - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - while((tmpreg != 0) & (timeout-- > 0)) - { - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - } - - /* Delay */ - for (index = 0; index<1000; index++); - - /* PALL command */ - FMC_Bank5_6->SDCMR = 0x00000012; - timeout = 0xFFFF; - while((tmpreg != 0) & (timeout-- > 0)) - { - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - } - - /* Auto refresh command */ - FMC_Bank5_6->SDCMR = 0x00000073; - timeout = 0xFFFF; - while((tmpreg != 0) & (timeout-- > 0)) - { - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - } - - /* MRD register program */ - FMC_Bank5_6->SDCMR = 0x00046014; - timeout = 0xFFFF; - while((tmpreg != 0) & (timeout-- > 0)) - { - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - } - - /* Set refresh count */ - tmpreg = FMC_Bank5_6->SDRTR; - FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1)); - - /* Disable write protection */ - tmpreg = FMC_Bank5_6->SDCR[0]; - FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF); - -/* - Bank1_SDRAM is configured as follow: - - FMC_SDRAMTimingInitStructure.FMC_LoadToActiveDelay = 2; - FMC_SDRAMTimingInitStructure.FMC_ExitSelfRefreshDelay = 6; - FMC_SDRAMTimingInitStructure.FMC_SelfRefreshTime = 4; - FMC_SDRAMTimingInitStructure.FMC_RowCycleDelay = 6; - FMC_SDRAMTimingInitStructure.FMC_WriteRecoveryTime = 2; - FMC_SDRAMTimingInitStructure.FMC_RPDelay = 2; - FMC_SDRAMTimingInitStructure.FMC_RCDDelay = 2; - - FMC_SDRAMInitStructure.FMC_Bank = SDRAM_BANK; - FMC_SDRAMInitStructure.FMC_ColumnBitsNumber = FMC_ColumnBits_Number_8b; - FMC_SDRAMInitStructure.FMC_RowBitsNumber = FMC_RowBits_Number_11b; - FMC_SDRAMInitStructure.FMC_SDMemoryDataWidth = FMC_SDMemory_Width_16b; - FMC_SDRAMInitStructure.FMC_InternalBankNumber = FMC_InternalBank_Number_4; - FMC_SDRAMInitStructure.FMC_CASLatency = FMC_CAS_Latency_3; - FMC_SDRAMInitStructure.FMC_WriteProtection = FMC_Write_Protection_Disable; - FMC_SDRAMInitStructure.FMC_SDClockPeriod = FMC_SDClock_Period_2; - FMC_SDRAMInitStructure.FMC_ReadBurst = FMC_Read_Burst_disable; - FMC_SDRAMInitStructure.FMC_ReadPipeDelay = FMC_ReadPipe_Delay_1; - FMC_SDRAMInitStructure.FMC_SDRAMTimingStruct = &FMC_SDRAMTimingInitStructure; -*/ - -} -#endif /* DATA_IN_ExtSDRAM */ /** @@ -1134,3 +560,4 @@ void SystemInit_ExtMemCtl(void) * @} */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + From 405567ac11daefe06bbdf459ab4eeac49ec95eae Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 13:17:47 +0400 Subject: [PATCH 029/100] Compilation fix when RTCLOCK not defined --- radio/src/telemetry/telemetry.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 3f1e5fced..bca364d52 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -55,6 +55,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin if (datetime.year != 0) { datetime.datestate = 1; } +#if defined(RTCLOCK) if (g_eeGeneral.adjustRTC && (datetime.datestate == 1)) { struct gtm t; gettime(&t); @@ -63,6 +64,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin t.tm_mday = datetime.day; rtcSetTime(&t); } +#endif } else { datetime.hour = ((uint8_t) ((data & 0xff000000) >> 24) + g_eeGeneral.timezone + 24) % 24; @@ -71,6 +73,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin if (datetime.datestate == 1) { datetime.timestate = 1; } +#if defined(RTCLOCK) if (g_eeGeneral.adjustRTC && (datetime.datestate == 1)) { struct gtm t; gettime(&t); @@ -83,6 +86,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin rtcSetTime(&t); } } +#endif } if (datetime.year == 0) { return; From 51500d4455ec1d1cd95c874f9c97ce28dea8805b Mon Sep 17 00:00:00 2001 From: Michele Date: Sun, 22 Mar 2015 07:44:18 +0100 Subject: [PATCH 030/100] Fix telemetry sensor navigation --- radio/src/gui/Taranis/menu_model_telemetry.cpp | 2 +- radio/src/translations/en.h.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 9926fda5f..1f6bb9860 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -223,7 +223,7 @@ void menuModelSensor(uint8_t event) int k = i + s_pgOfs; for (int j=0; j Date: Sun, 22 Mar 2015 17:58:14 +0400 Subject: [PATCH 031/100] Reset SF can now reset individual telemetry items (fix #161) --- radio/src/functions.cpp | 7 +++++++ .../gui/Taranis/menu_model_custom_functions.cpp | 14 ++++++++++++-- radio/src/myeeprom.h | 16 ++++++++++------ radio/src/telemetry/telemetry.cpp | 17 +++++++++++++++++ radio/src/telemetry/telemetry.h | 2 ++ 5 files changed, 48 insertions(+), 8 deletions(-) diff --git a/radio/src/functions.cpp b/radio/src/functions.cpp index 5ec076707..802b96094 100644 --- a/radio/src/functions.cpp +++ b/radio/src/functions.cpp @@ -41,6 +41,7 @@ CustomFunctionsContext modelFunctionsContext = { 0 }; #if defined(CPUARM) CustomFunctionsContext globalFunctionsContext = { 0 }; +extern TelemetryItem telemetryItems[]; #endif @@ -355,6 +356,12 @@ void evalFunctions() break; #endif } +#if defined(CPUARM) + if (CFN_PARAM(cfn)>=FUNC_RESET_PARAM_FIRST_TELEM) { + TelemetryItem * telemetryItem = & telemetryItems[CFN_PARAM(cfn)-FUNC_RESET_PARAM_FIRST_TELEM]; + telemetryItem->clear(); + } +#endif break; #if defined(CPUARM) diff --git a/radio/src/gui/Taranis/menu_model_custom_functions.cpp b/radio/src/gui/Taranis/menu_model_custom_functions.cpp index 7e142c888..f246762e6 100644 --- a/radio/src/gui/Taranis/menu_model_custom_functions.cpp +++ b/radio/src/gui/Taranis/menu_model_custom_functions.cpp @@ -211,8 +211,18 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu int16_t val_min = 0; int16_t val_max = 255; if (func == FUNC_RESET) { - val_max = FUNC_RESET_PARAM_LAST; - lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_VFSWRESET, CFN_PARAM(cfn), attr); + val_max = FUNC_RESET_PARAM_FIRST_TELEM+lastUsedTelemetryIndex(); + int param = CFN_PARAM(cfn); + if (param < FUNC_RESET_PARAM_FIRST_TELEM) { + lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_VFSWRESET, param, attr); + } + else { + if (param > FUNC_RESET_PARAM_FIRST_TELEM) { + INCDEC_ENABLE_CHECK(isSensorAvailableInResetSpecialFunction); + } + TelemetrySensor * sensor = & g_model.telemetrySensors[param-FUNC_RESET_PARAM_FIRST_TELEM]; + lcd_putsnAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, sensor->label, TELEM_LABEL_LEN, attr|ZCHAR); + } } #if defined(OVERRIDE_CHANNEL_FUNCTION) else if (func == FUNC_OVERRIDE_CHANNEL) { diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 93e079c50..4e7f3f2d0 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -130,6 +130,7 @@ #define NUM_POTS 5 #define NUM_XPOTS 3 #endif + #define TELEM_VALUES_MAX 32 #elif defined(CPUARM) #define MAX_MODELS 60 #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 @@ -141,6 +142,7 @@ #define NUM_TRAINER 16 #define NUM_POTS 3 #define NUM_XPOTS 0 + #define TELEM_VALUES_MAX 16 #elif defined(CPUM2560) || defined(CPUM2561) #define MAX_MODELS 30 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 @@ -152,6 +154,7 @@ #define NUM_TRAINER 8 #define NUM_POTS 3 #define NUM_XPOTS 0 + #define TELEM_VALUES_MAX 0 #elif defined(CPUM128) #define MAX_MODELS 30 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 @@ -163,6 +166,7 @@ #define NUM_TRAINER 8 #define NUM_POTS 3 #define NUM_XPOTS 0 + #define TELEM_VALUES_MAX 0 #else #define MAX_MODELS 16 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 @@ -174,6 +178,7 @@ #define NUM_TRAINER 8 #define NUM_POTS 3 #define NUM_XPOTS 0 + #define TELEM_VALUES_MAX 0 #endif #if defined(CPUARM) @@ -584,9 +589,13 @@ enum ResetFunctionParam { #endif #if ROTARY_ENCODERS > 1 FUNC_RESET_ROTENC2, +#endif +#if defined(CPUARM) + FUNC_RESET_PARAM_FIRST_TELEM, + FUNC_RESET_PARAM_LAST_TELEM = FUNC_RESET_PARAM_FIRST_TELEM + TELEM_VALUES_MAX, #endif FUNC_RESET_PARAMS_COUNT, - FUNC_RESET_PARAM_LAST = FUNC_RESET_PARAMS_COUNT-1 + FUNC_RESET_PARAM_LAST = FUNC_RESET_PARAMS_COUNT-1, }; enum AdjustGvarFunctionParam { @@ -1211,11 +1220,6 @@ PACK(typedef struct { #endif #if defined(CPUARM) -#if defined(PCBTARANIS) - #define TELEM_VALUES_MAX 32 -#else - #define TELEM_VALUES_MAX 16 -#endif #define TELEM_LABEL_LEN 4 //#define TELEM_FLAG_TIMEOUT 0x01 #define TELEM_FLAG_LOG 0x02 diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 1a3101b3f..8008fefcb 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -453,6 +453,23 @@ int availableTelemetryIndex() return -1; } +int lastUsedTelemetryIndex() +{ + for (int index=TELEM_VALUES_MAX-1; index>=0; index--) { + TelemetrySensor & telemetrySensor = g_model.telemetrySensors[index]; + if (telemetrySensor.isAvailable()) { + return index; + } + } + return -1; +} + +bool isSensorAvailableInResetSpecialFunction(int index) +{ + TelemetrySensor & telemetrySensor = g_model.telemetrySensors[index-FUNC_RESET_PARAM_FIRST_TELEM]; + return telemetrySensor.isAvailable(); +} + void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec) { int index = getTelemetryIndex(protocol, id, instance); diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index ddb9160a7..485892aab 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -185,6 +185,8 @@ inline bool isTelemetryFieldComparisonAvailable(int index) void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec); void delTelemetryIndex(uint8_t index); int availableTelemetryIndex(); +int lastUsedTelemetryIndex(); +bool isSensorAvailableInResetSpecialFunction(int index); int32_t getTelemetryValue(uint8_t index, uint8_t & prec); int32_t convertTelemetryValue(int32_t value, uint8_t unit, uint8_t prec, uint8_t destUnit, uint8_t destPrec); From f7355972109432af30d2715335e852d3119be474 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 18:33:40 +0400 Subject: [PATCH 032/100] Support for multiple items with the same value (allows different units/flags) --- radio/src/telemetry/telemetry.cpp | 70 +++++++++++++------------------ 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 8008fefcb..687804852 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -401,40 +401,6 @@ void TelemetryItem::eval(const TelemetrySensor & sensor) } } -int getTelemetryIndex(TelemetryProtocol protocol, uint16_t id, uint8_t instance) -{ - int available = -1; - - for (int index=0; index= 0) { - switch (protocol) { -#if defined(FRSKY_SPORT) - case TELEM_PROTO_FRSKY_SPORT: - frskySportSetDefault(available, id, instance); - break; -#endif -#if defined(FRSKY) - case TELEM_PROTO_FRSKY_D: - frskyDSetDefault(available, id); - break; -#endif - default: - break; - } - } - - return available; -} - void delTelemetryIndex(uint8_t index) { memclear(&g_model.telemetrySensors[index], sizeof(TelemetrySensor)); @@ -472,13 +438,37 @@ bool isSensorAvailableInResetSpecialFunction(int index) void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec) { - int index = getTelemetryIndex(protocol, id, instance); - - if (index >= 0) { - telemetryItems[index].setValue(g_model.telemetrySensors[index], value, unit, prec); + bool available = false; + + for (int index=0; index= 0) { + switch (protocol) { +#if defined(FRSKY_SPORT) + case TELEM_PROTO_FRSKY_SPORT: + frskySportSetDefault(index, id, instance); + break; +#endif +#if defined(FRSKY) + case TELEM_PROTO_FRSKY_D: + frskyDSetDefault(index, id); + break; +#endif + default: + break; + } + } + else { + // TODO error too many sensors + } } } From 91f5205c4ff6f9ad69974c67f2c844182e46853d Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 20:13:18 +0400 Subject: [PATCH 033/100] Auto Offset / Filter now independent --- radio/src/gui/9X/menu_model_telemetry.cpp | 40 +++++++++++++------ .../src/gui/Taranis/menu_model_telemetry.cpp | 24 ++++++++--- radio/src/myeeprom.h | 11 +---- radio/src/telemetry/frsky_d.cpp | 4 +- radio/src/telemetry/frsky_sport.cpp | 2 +- radio/src/telemetry/telemetry.cpp | 18 ++++----- radio/src/telemetry/telemetry.h | 6 ++- radio/src/translations.cpp | 2 + radio/src/translations.h | 2 + radio/src/translations/cz.h.txt | 2 + radio/src/translations/de.h.txt | 2 + radio/src/translations/en.h.txt | 2 + radio/src/translations/es.h.txt | 2 + radio/src/translations/fi.h.txt | 2 + radio/src/translations/fr.h.txt | 4 +- radio/src/translations/it.h.txt | 2 + radio/src/translations/pl.h.txt | 2 + radio/src/translations/pt.h.txt | 2 + radio/src/translations/se.h.txt | 2 + 19 files changed, 89 insertions(+), 42 deletions(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index bbfbaba1b..aca7fa13d 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -192,7 +192,9 @@ enum SensorFields { SENSOR_FIELD_PARAM2, SENSOR_FIELD_PARAM3, SENSOR_FIELD_PARAM4, - SENSOR_FIELD_INPUT_FLAGS, + SENSOR_FIELD_AUTOOFFSET, + SENSOR_FIELD_FILTER, + SENSOR_FIELD_PERSISTENT, SENSOR_FIELD_LOGS, SENSOR_FIELD_MAX }; @@ -249,12 +251,15 @@ bool isSensorAvailable(int sensor) #define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW +#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_FILTER_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) void menuModelSensor(uint8_t event) { TelemetrySensor * sensor = & g_model.telemetrySensors[s_currIdx]; - SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, 0 }); + SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, SENSOR_AUTOOFFSET_ROWS, SENSOR_FILTER_ROWS, SENSOR_PERSISTENT_ROWS, 0 }); lcd_outdezAtt(PSIZE(TR_MENUSENSOR)*FW+1, 0, s_currIdx+1, INVERS|LEFT); putsTelemetryChannelValue(SENSOR_2ND_COLUMN, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx), LEFT); @@ -284,7 +289,8 @@ void menuModelSensor(uint8_t event) sensor->instance = 0; if (sensor->type == TELEM_TYPE_CALCULATED) { sensor->param = 0; - sensor->inputFlags = 0; + sensor->autoOffset = 0; + sensor->filter = 0; } } break; @@ -348,7 +354,7 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM1: if (sensor->type == TELEM_TYPE_CALCULATED) { if (sensor->formula == TELEM_FORMULA_CELL) { - lcd_putsLeft(y, "Cells sensor"); + lcd_putsLeft(y, STR_CELLSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->cell.source ? MIXSRC_FIRST_TELEM+3*(sensor->cell.source-1) : 0, attr); if (attr) { sensor->cell.source = checkIncDec(event, sensor->cell.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isCellsSensor); @@ -356,7 +362,7 @@ void menuModelSensor(uint8_t event) break; } else if (sensor->formula == TELEM_FORMULA_DIST) { - lcd_putsLeft(y, "GPS sensor"); + lcd_putsLeft(y, STR_GPSSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->dist.gps ? MIXSRC_FIRST_TELEM+3*(sensor->dist.gps-1) : 0, attr); if (attr) { sensor->dist.gps = checkIncDec(event, sensor->dist.gps, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isGPSSensor); @@ -364,7 +370,7 @@ void menuModelSensor(uint8_t event) break; } else if (sensor->formula == TELEM_FORMULA_CONSUMPTION) { - lcd_putsLeft(y, "Amps sensor"); + lcd_putsLeft(y, STR_CURRENTSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->consumption.source ? MIXSRC_FIRST_TELEM+3*(sensor->consumption.source-1) : 0, attr); if (attr) { sensor->consumption.source = checkIncDec(event, sensor->consumption.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isCurrentSensor); @@ -373,7 +379,7 @@ void menuModelSensor(uint8_t event) } } else { - lcd_putsLeft(y, "Ratio"); + lcd_putsLeft(y, STR_RATIO); if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); if (sensor->custom.ratio == 0) lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); @@ -386,11 +392,11 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM2: if (sensor->type == TELEM_TYPE_CALCULATED) { if (sensor->formula == TELEM_FORMULA_CELL) { - sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, "Cell index", "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event); + sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event); break; } else if (sensor->formula == TELEM_FORMULA_DIST) { - lcd_putsLeft(y, "Alt sensor"); + lcd_putsLeft(y, STR_ALTSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->dist.alt ? MIXSRC_FIRST_TELEM+3*(sensor->dist.alt-1) : 0, attr); if (attr) { sensor->dist.alt = checkIncDec(event, sensor->dist.alt, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isAltSensor); @@ -412,7 +418,7 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM4: { - putsStrIdx(0, y, "Source", k-SENSOR_FIELD_PARAM1+1); + putsStrIdx(0, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1); int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1]; if (attr) { source = checkIncDec(event, source, -TELEM_VALUES_MAX, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); @@ -427,12 +433,20 @@ void menuModelSensor(uint8_t event) break; } - case SENSOR_FIELD_INPUT_FLAGS: - sensor->inputFlags = selectMenuItem(SENSOR_2ND_COLUMN, y, "Options", "\013None\0 ""Auto Offset""Filter\0", sensor->inputFlags, 0, TELEM_INPUT_FLAGS_MAX, attr, event); + case SENSOR_FIELD_AUTOOFFSET: + ON_OFF_MENU_ITEM(sensor->autoOffset, SENSOR_2ND_COLUMN, y, STR_AUTOOFFSET, attr, event); + break; + + case SENSOR_FIELD_FILTER: + ON_OFF_MENU_ITEM(sensor->filter, SENSOR_2ND_COLUMN, y, STR_FILTER, attr, event); + break; + + case SENSOR_FIELD_PERSISTENT: + ON_OFF_MENU_ITEM(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event); break; case SENSOR_FIELD_LOGS: - ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, "Logs", attr, event); + ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, STR_LOGS, attr, event); break; } diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 1f6bb9860..21c39f3bc 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -149,7 +149,9 @@ enum SensorFields { SENSOR_FIELD_PARAM2, SENSOR_FIELD_PARAM3, SENSOR_FIELD_PARAM4, - SENSOR_FIELD_INPUT_FLAGS, + SENSOR_FIELD_AUTOOFFSET, + SENSOR_FIELD_FILTER, + SENSOR_FIELD_PERSISTENT, SENSOR_FIELD_LOGS, SENSOR_FIELD_MAX }; @@ -206,12 +208,15 @@ bool isSensorAvailable(int sensor) #define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW +#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_FILTER_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) void menuModelSensor(uint8_t event) { TelemetrySensor * sensor = & g_model.telemetrySensors[s_currIdx]; - SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, 0 }); + SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, SENSOR_AUTOOFFSET_ROWS, SENSOR_FILTER_ROWS, SENSOR_PERSISTENT_ROWS, 0 }); lcd_outdezAtt(PSIZE(TR_MENUSENSOR)*FW+1, 0, s_currIdx+1, INVERS|LEFT); putsTelemetryChannelValue(SENSOR_2ND_COLUMN, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx), LEFT); @@ -241,7 +246,8 @@ void menuModelSensor(uint8_t event) sensor->instance = 0; if (sensor->type == TELEM_TYPE_CALCULATED) { sensor->param = 0; - sensor->inputFlags = 0; + sensor->filter = 0; + sensor->autoOffset = 0; } } break; @@ -384,8 +390,16 @@ void menuModelSensor(uint8_t event) break; } - case SENSOR_FIELD_INPUT_FLAGS: - sensor->inputFlags = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_OPTIONS, "\013None\0 ""Auto Offset""Filter\0", sensor->inputFlags, 0, TELEM_INPUT_FLAGS_MAX, attr, event); + case SENSOR_FIELD_AUTOOFFSET: + ON_OFF_MENU_ITEM(sensor->autoOffset, SENSOR_2ND_COLUMN, y, STR_AUTOOFFSET, attr, event); + break; + + case SENSOR_FIELD_FILTER: + ON_OFF_MENU_ITEM(sensor->filter, SENSOR_2ND_COLUMN, y, STR_FILTER, attr, event); + break; + + case SENSOR_FIELD_PERSISTENT: + ON_OFF_MENU_ITEM(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event); break; case SENSOR_FIELD_LOGS: diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 4e7f3f2d0..17cd274b1 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -1247,14 +1247,6 @@ enum TelemetrySensorFormula TELEM_FORMULA_DIST, }; -enum TelemetrySensorInputFlags -{ - TELEM_INPUT_FLAGS_NONE, - TELEM_INPUT_FLAGS_AUTO_OFFSET, - TELEM_INPUT_FLAGS_FILTERING, - TELEM_INPUT_FLAGS_MAX=TELEM_INPUT_FLAGS_FILTERING -}; - PACK(typedef struct { union { uint16_t id; // data identifier, for FrSky we can reuse existing ones. Source unit is derived from type. @@ -1268,7 +1260,8 @@ PACK(typedef struct { uint8_t type:1; // 0=custom / 1=calculated uint8_t unit:5; // user can choose what unit to display each value in uint8_t prec:2; - uint8_t inputFlags:2; + uint8_t autoOffset:1; + uint8_t filter:1; uint8_t logs:1; uint8_t persistent:1; uint8_t spare:4; diff --git a/radio/src/telemetry/frsky_d.cpp b/radio/src/telemetry/frsky_d.cpp index 1565971da..0ddcd133e 100644 --- a/radio/src/telemetry/frsky_d.cpp +++ b/radio/src/telemetry/frsky_d.cpp @@ -643,10 +643,10 @@ void frskyDSetDefault(int index, uint16_t id) if (id >= D_A1_ID && id <= D_A2_ID) { telemetrySensor.prec = 1; telemetrySensor.custom.ratio = 132; - telemetrySensor.inputFlags = TELEM_INPUT_FLAGS_FILTERING; + telemetrySensor.filter = 1; } else if (id == D_RSSI_ID) { - telemetrySensor.inputFlags = TELEM_INPUT_FLAGS_FILTERING; + telemetrySensor.filter = 1; } } else { diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 6fe757915..b76824d33 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -254,7 +254,7 @@ void frskySportSetDefault(int index, uint16_t id, uint8_t instance) telemetrySensor.init(sensor->name, unit, prec); if (id >= ADC1_ID && id <= BATT_ID) { telemetrySensor.custom.ratio = 132; - telemetrySensor.inputFlags = TELEM_INPUT_FLAGS_FILTERING; + telemetrySensor.filter = 1; } } else { diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 687804852..923cae585 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -143,28 +143,28 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin } else { newVal = sensor.getValue(newVal, unit, prec); - if (sensor.inputFlags == TELEM_INPUT_FLAGS_AUTO_OFFSET) { + if (sensor.autoOffset) { if (!isAvailable()) { - offsetAuto = -newVal; + std.offsetAuto = -newVal; } - newVal += offsetAuto; + newVal += std.offsetAuto; } - else if (sensor.inputFlags == TELEM_INPUT_FLAGS_FILTERING) { + else if (sensor.filter) { if (!isAvailable()) { for (int i=0; i Date: Sun, 22 Mar 2015 20:56:03 +0400 Subject: [PATCH 034/100] RPM blades --- radio/src/gui/9X/menu_model_telemetry.cpp | 32 ++++++++++++------- .../src/gui/Taranis/menu_model_telemetry.cpp | 32 ++++++++++++------- radio/src/telemetry/frsky.cpp | 1 + radio/src/telemetry/frsky_sport.cpp | 3 ++ radio/src/telemetry/telemetry.cpp | 3 ++ 5 files changed, 47 insertions(+), 24 deletions(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index aca7fa13d..205a6a5ab 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -245,15 +245,15 @@ bool isSensorAvailable(int sensor) #define SENSOR_2ND_COLUMN (12*FW) #define SENSOR_3RD_COLUMN (18*FW) -#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_PARAM1_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0 -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW -#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_FILTER_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) void menuModelSensor(uint8_t event) { @@ -379,13 +379,21 @@ void menuModelSensor(uint8_t event) } } else { - lcd_putsLeft(y, STR_RATIO); - if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); - if (sensor->custom.ratio == 0) - lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); - else - lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1); - break; + if (sensor->unit == UNIT_RPMS) { + lcd_putsLeft(y, NO_INDENT(STR_BLADES)); + if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 1, 30000); + lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr); + break; + } + else { + lcd_putsLeft(y, STR_RATIO); + if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); + if (sensor->custom.ratio == 0) + lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); + else + lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1); + break; + } } // no break diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 21c39f3bc..d0411c79b 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -202,15 +202,15 @@ bool isSensorAvailable(int sensor) #define SENSOR_2ND_COLUMN (12*FW) #define SENSOR_3RD_COLUMN (18*FW) -#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_PARAM1_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0 -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW -#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_FILTER_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) void menuModelSensor(uint8_t event) { @@ -336,13 +336,21 @@ void menuModelSensor(uint8_t event) } } else { - lcd_putsLeft(y, STR_RATIO); - if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); - if (sensor->custom.ratio == 0) - lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); - else - lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1); - break; + if (sensor->unit == UNIT_RPMS) { + lcd_putsLeft(y, NO_INDENT(STR_BLADES)); + if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 1, 30000); + lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr); + break; + } + else { + lcd_putsLeft(y, STR_RATIO); + if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); + if (sensor->custom.ratio == 0) + lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); + else + lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1); + break; + } } // no break diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 046921ce0..01ffaba5d 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -573,6 +573,7 @@ void telemetryReset() setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, ALT_FIRST_ID, 1, 1000, UNIT_METERS, 2); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CELLS_FIRST_ID, 2, 0x80280220, UNIT_CELLS, 0); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CURR_FIRST_ID, 3, 100, UNIT_AMPS, 2); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, RPM_FIRST_ID, 5, 3600, UNIT_RPMS, 0); #endif } diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index b76824d33..7dd5e7033 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -256,6 +256,9 @@ void frskySportSetDefault(int index, uint16_t id, uint8_t instance) telemetrySensor.custom.ratio = 132; telemetrySensor.filter = 1; } + if (unit == UNIT_RPMS) { + telemetrySensor.custom.ratio = 1; + } } else { telemetrySensor.init(id); diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 923cae585..faa90c3d2 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -141,6 +141,9 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin datetime.timestate = 1; newVal = 0; } + else if (unit == UNIT_RPMS) { + newVal = newVal / sensor.custom.ratio; + } else { newVal = sensor.getValue(newVal, unit, prec); if (sensor.autoOffset) { From 7f6d77e441adf7fdef71c6477c46c1aea00b9723 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 21:38:28 +0400 Subject: [PATCH 035/100] Translations --- radio/src/gui/9X/menu_model_telemetry.cpp | 8 ++++---- radio/src/gui/Taranis/menu_model_telemetry.cpp | 8 ++++---- radio/src/translations.cpp | 4 ++++ radio/src/translations.h | 10 +++++++++- radio/src/translations/cz.h.txt | 12 ++++++++++++ radio/src/translations/de.h.txt | 12 ++++++++++++ radio/src/translations/en.h.txt | 12 ++++++++++++ radio/src/translations/es.h.txt | 12 ++++++++++++ radio/src/translations/fi.h.txt | 12 ++++++++++++ radio/src/translations/fr.h.txt | 12 ++++++++++++ radio/src/translations/it.h.txt | 12 ++++++++++++ radio/src/translations/pl.h.txt | 12 ++++++++++++ radio/src/translations/pt.h.txt | 12 ++++++++++++ radio/src/translations/se.h.txt | 12 ++++++++++++ 14 files changed, 141 insertions(+), 9 deletions(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index 205a6a5ab..0b716626f 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -284,7 +284,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_TYPE: - sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, "\012Custom\0 Calculated", sensor->type, 0, 1, attr, event); + sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, STR_VSENSORTYPES, sensor->type, 0, 1, attr, event); if (attr && checkIncDec_Ret) { sensor->instance = 0; if (sensor->type == TELEM_TYPE_CALCULATED) { @@ -313,7 +313,7 @@ void menuModelSensor(uint8_t event) } } else { - sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, "Formula", "\010Add\0 Average\0Min\0 Max\0 MultiplyCell\0 ConsumptDistance", sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); + sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, STR_VFORMULAS, sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); if (attr && checkIncDec_Ret) { sensor->param = 0; if (sensor->formula == TELEM_FORMULA_CELL) { @@ -345,7 +345,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_PRECISION: - sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, "\005PREC0PREC1PREC2", sensor->prec, 0, 2, attr, event); + sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, STR_VPREC, sensor->prec, 0, 2, attr, event); if (attr && checkIncDec_Ret) { telemetryItems[s_currIdx].clear(); } @@ -400,7 +400,7 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM2: if (sensor->type == TELEM_TYPE_CALCULATED) { if (sensor->formula == TELEM_FORMULA_CELL) { - sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event); + sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, STR_VCELLINDEX, sensor->cell.index, 0, 8, attr, event); break; } else if (sensor->formula == TELEM_FORMULA_DIST) { diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index d0411c79b..bcefe709c 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -241,7 +241,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_TYPE: - sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, "\012Custom\0 Calculated", sensor->type, 0, 1, attr, event); + sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, STR_VSENSORTYPES, sensor->type, 0, 1, attr, event); if (attr && checkIncDec_Ret) { sensor->instance = 0; if (sensor->type == TELEM_TYPE_CALCULATED) { @@ -270,7 +270,7 @@ void menuModelSensor(uint8_t event) } } else { - sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, "\010Add\0 Average\0Min\0 Max\0 MultiplyCell\0 ConsumptDistance", sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); + sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, STR_VFORMULAS, sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); if (attr && checkIncDec_Ret) { sensor->param = 0; if (sensor->formula == TELEM_FORMULA_CELL) { @@ -302,7 +302,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_PRECISION: - sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, "\005PREC0PREC1PREC2", sensor->prec, 0, 2, attr, event); + sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, STR_VPREC, sensor->prec, 0, 2, attr, event); if (attr && checkIncDec_Ret) { telemetryItems[s_currIdx].clear(); } @@ -357,7 +357,7 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM2: if (sensor->type == TELEM_TYPE_CALCULATED) { if (sensor->formula == TELEM_FORMULA_CELL) { - sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event); + sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, STR_VCELLINDEX, sensor->cell.index, 0, 8, attr, event); break; } else if (sensor->formula == TELEM_FORMULA_DIST) { diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 5299eb80f..d366ccd4b 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -121,6 +121,10 @@ const pm_char STR_OPEN9X[] PROGMEM = ISTR(DSM_PROTOCOLS) ISTR(VOLTSRC) ISTR(CURVE_TYPES) + ISTR(VSENSORTYPES) + ISTR(VFORMULAS) + ISTR(VPREC) + ISTR(VCELLINDEX) #endif #if defined(MAVLINK) ISTR(MAVLINK_BAUDS) diff --git a/radio/src/translations.h b/radio/src/translations.h index 205ed5a25..3efa979b9 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -192,7 +192,11 @@ extern const pm_char STR_OPEN9X[]; #define OFS_DSM_PROTOCOLS (OFS_XJT_PROTOCOLS + sizeof(TR_XJT_PROTOCOLS)) #define OFS_VOLTSRC (OFS_DSM_PROTOCOLS + sizeof(TR_DSM_PROTOCOLS)) #define OFS_CURVE_TYPES (OFS_VOLTSRC + sizeof(TR_VOLTSRC)) - #define OFS_MAVLINK_BAUDS (OFS_CURVE_TYPES + sizeof(TR_CURVE_TYPES)) + #define OFS_VSENSORTYPES (OFS_CURVE_TYPES + sizeof(TR_CURVE_TYPES)) + #define OFS_VFORMULAS (OFS_VSENSORTYPES + sizeof(TR_VSENSORTYPES)) + #define OFS_VPREC (OFS_VFORMULAS + sizeof(TR_VFORMULAS)) + #define OFS_VCELLINDEX (OFS_VPREC + sizeof(TR_VPREC)) + #define OFS_MAVLINK_BAUDS (OFS_VCELLINDEX + sizeof(TR_VCELLINDEX)) #else #define OFS_MAVLINK_BAUDS (OFS_VTRAINERMODES) #endif @@ -298,6 +302,10 @@ extern const pm_char STR_OPEN9X[]; #define STR_XJT_PROTOCOLS (STR_OPEN9X + OFS_XJT_PROTOCOLS) #define STR_DSM_PROTOCOLS (STR_OPEN9X + OFS_DSM_PROTOCOLS) #define STR_CURVE_TYPES (STR_OPEN9X + OFS_CURVE_TYPES) + #define STR_VSENSORTYPES (STR_OPEN9X + OFS_VSENSORTYPES) + #define STR_VFORMULAS (STR_OPEN9X + OFS_VFORMULAS) + #define STR_VPREC (STR_OPEN9X + OFS_VPREC) + #define STR_VCELLINDEX (STR_OPEN9X + OFS_VCELLINDEX) #endif #if defined(MAVLINK) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 58522fd5d..b11cdc9fd 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -531,6 +531,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT "\007" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 6687aa66d..e1b5c5c77 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -530,6 +530,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT "\007" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index b0c368252..92686d438 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -530,6 +530,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT "\007" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 7cb35b907..4fdf8d2cf 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -491,6 +491,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circulo ""Estabilizar ""Entrenamiento""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guiado ""Inicialisando""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 85d84c091..6a9198e5c 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -491,6 +491,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index a8340c2c9..abbb6b355 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -534,6 +534,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Perso\0 ""Calculé\0 " + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Addition""Moyenne\0""Min\0 ""Max\0 ""Multipl.""Elément\0""Consomm.""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Mini.\0 ""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Maxi.\0 ""Diff.\0 " + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT "\007" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 16a7642a6..e27d7bc9e 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -491,6 +491,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Inizializza ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 31b675f29..c3ee2784f 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -489,6 +489,18 @@ #define TR_MAVLINK_AP_MODES "Ręczny ""Koło ""Stabilizacja ""Trening ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Sterowany ""Inicjalizacja""BŁĘDNY " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 83f080105..5211b5910 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -491,6 +491,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index e6535bd70..cf55e4651 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -491,6 +491,18 @@ #define TR_MAVLINK_AP_MODES "Manuell ""Cirkla ""Stabilisera ""Övning ""Fly by Wire A""Fly by Wire A""Automatisk ""Flyg Hem ""Hovra ""Guidad ""Initialiserar""OGILTIG " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 From 763f9062444b08c06974cb4de2665303f09be2e9 Mon Sep 17 00:00:00 2001 From: bsongis Date: Sun, 22 Mar 2015 18:50:08 +0100 Subject: [PATCH 036/100] [Taranis X9E] Bluetooth driver --- radio/src/main_arm.cpp | 4 ++ .../src/targets/taranis/bluetooth_driver.cpp | 63 +++++++++++++++---- radio/src/targets/taranis/board_taranis.h | 1 + 3 files changed, 55 insertions(+), 13 deletions(-) diff --git a/radio/src/main_arm.cpp b/radio/src/main_arm.cpp index 09c7b209f..747160ab3 100644 --- a/radio/src/main_arm.cpp +++ b/radio/src/main_arm.cpp @@ -203,4 +203,8 @@ void perMain() topLcdRefreshEnd(); #endif +#if defined(REV9E) && !defined(SIMU) + bt_wakeup(); +#endif + } diff --git a/radio/src/targets/taranis/bluetooth_driver.cpp b/radio/src/targets/taranis/bluetooth_driver.cpp index 55f106fec..819c1c153 100755 --- a/radio/src/targets/taranis/bluetooth_driver.cpp +++ b/radio/src/targets/taranis/bluetooth_driver.cpp @@ -16,9 +16,16 @@ #define BT_UART_AF GPIO_AF_USART6 #define BT_UART_IRQn USART6_IRQn -#define BT_UART_GPIO_PORT GPIOG +#define BT_UART_GPIO_CLK_TXRX RCC_AHB1Periph_GPIOG +#define BT_UART_GPIO_PORT_TXRX GPIOG #define BT_UART_GPIO_PIN_TX GPIO_Pin_14 #define BT_UART_GPIO_PIN_RX GPIO_Pin_9 +#define BT_UART_GPIO_CLK_EN RCC_AHB1Periph_GPIOD +#define BT_UART_GPIO_PORT_EN GPIOD +#define BT_UART_GPIO_PIN_EN GPIO_Pin_11 +#define BT_UART_GPIO_CLK_BRTS RCC_AHB1Periph_GPIOB +#define BT_UART_GPIO_PORT_BRTS GPIOB +#define BT_UART_GPIO_PIN_BRTS GPIO_Pin_10 #define BT_UART_GPIO_TX_PinSource GPIO_PinSource14 #define BT_UART_GPIO_RX_PinSource GPIO_PinSource9 @@ -30,25 +37,34 @@ int bt_open() GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE); + RCC_AHB1PeriphClockCmd(BT_UART_GPIO_CLK_TXRX, ENABLE); + RCC_AHB1PeriphClockCmd(BT_UART_GPIO_CLK_EN, ENABLE); + RCC_AHB1PeriphClockCmd(BT_UART_GPIO_CLK_BRTS, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE); - GPIO_PinAFConfig(BT_UART_GPIO_PORT, BT_UART_GPIO_TX_PinSource, BT_UART_AF); - GPIO_PinAFConfig(BT_UART_GPIO_PORT, BT_UART_GPIO_RX_PinSource, BT_UART_AF); - - GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_TX; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_EN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_Init(BT_UART_GPIO_PORT, &GPIO_InitStructure); - - GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_RX; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_Init(BT_UART_GPIO_PORT_EN, &GPIO_InitStructure); + + GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_BRTS; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_Init(BT_UART_GPIO_PORT, &GPIO_InitStructure); + GPIO_Init(BT_UART_GPIO_PORT_BRTS, &GPIO_InitStructure); + + GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_TX|BT_UART_GPIO_PIN_RX; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(BT_UART_GPIO_PORT_TXRX, &GPIO_InitStructure); + + GPIO_PinAFConfig(BT_UART_GPIO_PORT_TXRX, BT_UART_GPIO_TX_PinSource, BT_UART_AF); + GPIO_PinAFConfig(BT_UART_GPIO_PORT_TXRX, BT_UART_GPIO_RX_PinSource, BT_UART_AF); USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_Parity = USART_Parity_No; @@ -68,9 +84,14 @@ int bt_open() NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); + GPIO_SetBits(BT_UART_GPIO_PORT_BRTS, BT_UART_GPIO_PIN_BRTS); + GPIO_ResetBits(BT_UART_GPIO_PORT_EN, BT_UART_GPIO_PIN_EN); // open bluetooth + return 0; } +uint8_t bt_state = 0; + extern "C" void USART6_IRQHandler(void) { #if 1 @@ -90,6 +111,8 @@ extern "C" void USART6_IRQHandler(void) } else { USART_ITConfig(BT_UART, USART_IT_TXE, DISABLE); + GPIO_SetBits(BT_UART_GPIO_PORT_BRTS, BT_UART_GPIO_PIN_BRTS); + bt_state = 0; } } #endif @@ -101,10 +124,23 @@ int bt_write(const void *buffer, int len) for (int i=0; i Date: Sun, 22 Mar 2015 22:00:04 +0400 Subject: [PATCH 037/100] Warning if all telemetry slots are full --- radio/src/gui/9X/menu_model_telemetry.cpp | 3 +++ radio/src/gui/Taranis/menu_model_telemetry.cpp | 3 +++ radio/src/telemetry/telemetry.cpp | 2 +- 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/pl.h.txt | 1 + radio/src/translations/pt.h.txt | 1 + radio/src/translations/se.h.txt | 1 + 15 files changed, 19 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index 0b716626f..0750de2f9 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -574,6 +574,9 @@ void menuModelTelemetry(uint8_t event) s_currIdx = res; pushMenu(menuModelSensor); } + else { + POPUP_WARNING(STR_TELEMETRYFULL); + } } break; #endif diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index bcefe709c..409674bcd 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -538,6 +538,9 @@ void menuModelTelemetry(uint8_t event) s_currIdx = res; pushMenu(menuModelSensor); } + else { + POPUP_WARNING(STR_TELEMETRYFULL); + } } break; diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index faa90c3d2..d11201940 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -470,7 +470,7 @@ void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance } } else { - // TODO error too many sensors + POPUP_WARNING(STR_TELEMETRYFULL); } } } diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index d366ccd4b..2a4f51c29 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -556,6 +556,7 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR; const pm_char STR_CURRENTSENSOR[] PROGMEM = TR_CURRENTSENSOR; const pm_char STR_AUTOOFFSET[] PROGMEM = TR_AUTOOFFSET; const pm_char STR_FILTER[] PROGMEM = TR_FILTER; + const pm_char STR_TELEMETRYFULL[] PROGMEM = TR_TELEMETRYFULL; #endif #if defined(PCBTARANIS) diff --git a/radio/src/translations.h b/radio/src/translations.h index 3efa979b9..8d9bd4b64 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -766,6 +766,7 @@ extern const pm_char STR_BLCOLOR[]; extern const pm_char STR_CURRENTSENSOR[]; extern const pm_char STR_AUTOOFFSET[]; extern const pm_char STR_FILTER[]; + extern const pm_char STR_TELEMETRYFULL[]; #endif #if defined(PCBTARANIS) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index b11cdc9fd..0e2043901 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1061,6 +1061,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index e1b5c5c77..7c8d3ecc4 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1060,6 +1060,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 92686d438..cf1bb254e 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1060,6 +1060,7 @@ #define TR_CURRENTSENSOR "Curr. sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 4fdf8d2cf..bd066eb93 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -996,6 +996,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 6a9198e5c..13ddc06b2 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -996,6 +996,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index abbb6b355..91fdd3f31 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1056,6 +1056,7 @@ #define TR_CURRENTSENSOR "Capt courant" #define TR_AUTOOFFSET "Offset auto" #define TR_FILTER "Filtrage" +#define TR_TELEMETRYFULL "Plus de capteurs libres!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index e27d7bc9e..5535199bd 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -996,6 +996,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index c3ee2784f..7d4fa1b95 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -994,6 +994,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 5211b5910..f16fa94b6 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -996,6 +996,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index cf55e4651..5abce5aca 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -996,6 +996,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" From 11ede465aca542c6a9f9478163b492bbaae8d503 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 22:25:58 +0400 Subject: [PATCH 038/100] Cosmetics --- radio/src/functions.cpp | 1 - radio/src/telemetry/telemetry.h | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/radio/src/functions.cpp b/radio/src/functions.cpp index 802b96094..9e2450ef0 100644 --- a/radio/src/functions.cpp +++ b/radio/src/functions.cpp @@ -41,7 +41,6 @@ CustomFunctionsContext modelFunctionsContext = { 0 }; #if defined(CPUARM) CustomFunctionsContext globalFunctionsContext = { 0 }; -extern TelemetryItem telemetryItems[]; #endif diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index f3037c95a..981d623f2 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -184,6 +184,8 @@ inline bool isTelemetryFieldComparisonAvailable(int index) return (sensor.id != 0); } +extern TelemetryItem telemetryItems[]; + void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec); void delTelemetryIndex(uint8_t index); int availableTelemetryIndex(); From 9245d7038ca81298732888aa91554eb26f24a8f0 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 22:40:31 +0400 Subject: [PATCH 039/100] Companion support for new flags --- companion/src/eeprominterface.h | 3 +- .../src/firmwares/opentx/opentxeeprom.cpp | 3 +- companion/src/modeledit/telemetry.cpp | 3 +- companion/src/modeledit/telemetry_sensor.ui | 39 ++++++++----------- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 1c65c9c5d..b982da9d0 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -906,7 +906,8 @@ class SensorData { char label[4+1]; unsigned int unit; unsigned int prec; - unsigned int inputFlags; + bool autoOffset; + bool filter; bool logs; bool persistent; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index a0531d166..139ea6fe9 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2696,7 +2696,8 @@ class SensorField: public TransformedField { internalField.Append(new UnsignedField<1>(sensor.type, "type")); internalField.Append(new UnsignedField<5>(sensor.unit, "unit")); internalField.Append(new UnsignedField<2>(sensor.prec, "prec")); - internalField.Append(new UnsignedField<2>(sensor.inputFlags, "inputFlags")); + internalField.Append(new BoolField<1>(sensor.autoOffset)); + internalField.Append(new BoolField<1>(sensor.filter)); internalField.Append(new BoolField<1>(sensor.logs)); internalField.Append(new BoolField<1>(sensor.persistent)); internalField.Append(new SpareBitsField<4>()); diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index ee2215640..5eb2fb33f 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -486,7 +486,8 @@ TelemetrySensorPanel::TelemetrySensorPanel(QWidget *parent, SensorData & sensor, ui->instance->setField(sensor.instance); ui->ratio->setField(sensor.ratio); ui->offset->setField(sensor.offset); - ui->inputFlags->setField(sensor.inputFlags); + ui->autoOffset->setField(sensor.autoOffset); + ui->filter->setField(sensor.filter); ui->logs->setField(sensor.logs); ui->persistent->setField(sensor.persistent); ui->gpsSensor->setField(sensor.gps); diff --git a/companion/src/modeledit/telemetry_sensor.ui b/companion/src/modeledit/telemetry_sensor.ui index 8d9e03ce1..182159ebb 100644 --- a/companion/src/modeledit/telemetry_sensor.ui +++ b/companion/src/modeledit/telemetry_sensor.ui @@ -13,7 +13,7 @@ Form - + 0 @@ -521,28 +521,23 @@
- - - - 0 - 0 - + + + Qt::LeftToRight + + + Auto Offset + + + + + + + Qt::LeftToRight + + + Filter - - - --- - - - - - Auto Offset - - - - - Filtered - - From 6f6257dec3fdda72904f4dd13cdb9daf358d8408 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 23:37:36 +0400 Subject: [PATCH 040/100] Cosmetics --- radio/src/gui/9X/menu_model_telemetry.cpp | 18 +++++++++--------- radio/src/gui/Taranis/menu_model_telemetry.cpp | 18 +++++++++--------- radio/src/myeeprom.h | 4 +++- radio/src/telemetry/telemetry.cpp | 14 ++++++++++++++ 4 files changed, 35 insertions(+), 19 deletions(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index 0750de2f9..b5a0961d2 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -245,15 +245,15 @@ bool isSensorAvailable(int sensor) #define SENSOR_2ND_COLUMN (12*FW) #define SENSOR_3RD_COLUMN (18*FW) -#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PARAM1_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0 -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 -#define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW -#define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW -#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_FILTER_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_UNIT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_PREC_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_PARAM1_ROWS (sensor->unit >= UNIT_FIRST_VIRTUAL ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 +#define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW +#define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW +#define SENSOR_AUTOOFFSET_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_FILTER_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_PERSISTENT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) void menuModelSensor(uint8_t event) { diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 409674bcd..799a827e6 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -202,15 +202,15 @@ bool isSensorAvailable(int sensor) #define SENSOR_2ND_COLUMN (12*FW) #define SENSOR_3RD_COLUMN (18*FW) -#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PARAM1_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0 -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 -#define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW -#define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW -#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_FILTER_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_UNIT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_PREC_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_PARAM1_ROWS (sensor->unit >= UNIT_FIRST_VIRTUAL ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 +#define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW +#define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW +#define SENSOR_AUTOOFFSET_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_FILTER_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_PERSISTENT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) void menuModelSensor(uint8_t event) { diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 1aaaad001..383422e50 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -1154,7 +1154,8 @@ enum TelemetryUnit { UNIT_MINUTES, UNIT_SECONDS, // FrSky format used for these fields, could be another format in the future - UNIT_CELLS, + UNIT_FIRST_VIRTUAL, + UNIT_CELLS = UNIT_FIRST_VIRTUAL, UNIT_DATETIME, UNIT_GPS, UNIT_GPS_LONGITUDE, @@ -1293,6 +1294,7 @@ PACK(typedef struct { void init(uint16_t id); bool isAvailable(); int32_t getValue(int32_t value, uint8_t unit, uint8_t prec) const; + bool isConfigurable(); }) TelemetrySensor; #endif diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index cbc68b997..154a25fd3 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -583,3 +583,17 @@ int32_t TelemetrySensor::getValue(int32_t value, uint8_t unit, uint8_t prec) con return value; } +bool TelemetrySensor::isConfigurable() +{ + if (type == TELEM_TYPE_CALCULATED) { + if (formula >= TELEM_FORMULA_CELL) { + return false; + } + } + else { + if (unit >= UNIT_FIRST_VIRTUAL) { + return false; + } + } + return true; +} From 566dfea9bd7422421522b5afa039cc6b7805f6e7 Mon Sep 17 00:00:00 2001 From: bsongis Date: Sun, 22 Mar 2015 20:54:47 +0100 Subject: [PATCH 041/100] EEPROM shift fix --- companion/src/firmwares/opentx/opentxeeprom.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 139ea6fe9..fb6eca8ca 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -3032,7 +3032,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne } if (IS_ARM(board) && version >= 216) { - for (int i=0; i < GetCurrentFirmware()->getCapability(Pots); i++) { + for (int i=0; i < MAX_POTS(board)+MAX_SLIDERS(board); i++) { internalField.Append(new SignedField<8>(modelData.potPosition[i])); } } From f93dad845dcd3a9a7c546f6f1aaf0a28822212ab Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Mon, 23 Mar 2015 00:08:13 +0400 Subject: [PATCH 042/100] Cosmetics --- radio/src/gui/9X/menu_model_telemetry.cpp | 2 +- radio/src/gui/Taranis/menu_model_telemetry.cpp | 2 +- radio/src/translations/cz.h.txt | 2 +- radio/src/translations/es.h.txt | 2 +- radio/src/translations/fi.h.txt | 2 +- radio/src/translations/fr.h.txt | 2 +- radio/src/translations/it.h.txt | 2 +- radio/src/translations/pl.h.txt | 2 +- radio/src/translations/pt.h.txt | 2 +- radio/src/translations/se.h.txt | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index b5a0961d2..6a3a9356b 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -284,7 +284,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_TYPE: - sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, STR_VSENSORTYPES, sensor->type, 0, 1, attr, event); + sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, NO_INDENT(STR_TYPE), STR_VSENSORTYPES, sensor->type, 0, 1, attr, event); if (attr && checkIncDec_Ret) { sensor->instance = 0; if (sensor->type == TELEM_TYPE_CALCULATED) { diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 799a827e6..b98e89b93 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -241,7 +241,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_TYPE: - sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, STR_VSENSORTYPES, sensor->type, 0, 1, attr, event); + sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, NO_INDENT(STR_TYPE), STR_VSENSORTYPES, sensor->type, 0, 1, attr, event); if (attr && checkIncDec_Ret) { sensor->instance = 0; if (sensor->type == TELEM_TYPE_CALCULATED) { diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index f8a31e100..7794b600a 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -858,7 +858,7 @@ #define TR_SD_SPEED "Rychlost:" #define TR_SD_SECTORS "Sektorů :" #define TR_SD_SIZE "Velikost:" -#define TR_TYPE TR_SD_TYPE +#define TR_TYPE INDENT TR_SD_TYPE #define TR_GLOBAL_VARS "Globální proměnné" #define TR_GLOBAL_V "GLOB.PROM." #define TR_GLOBAL_VAR "Globální proměnná" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 0c905f589..f1e1c24e8 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -795,7 +795,7 @@ #define TR_SD_SPEED "Velocidad:" #define TR_SD_SECTORS "Sectores:" #define TR_SD_SIZE "Tamaño:" -#define TR_TYPE "Tipo" +#define TR_TYPE INDENT "Tipo" #define TR_GLOBAL_VARS "Global Variables" #define TR_GLOBAL_V "GLOBAL V." #define TR_GLOBAL_VAR "Global Variable" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 21b6e91a2..8b35c8ba6 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -795,7 +795,7 @@ #define TR_SD_SPEED "Speed:" #define TR_SD_SECTORS "Sectors:" #define TR_SD_SIZE "Size:" -#define TR_TYPE "Type" +#define TR_TYPE INDENT "Type" #define TR_GLOBAL_VARS "Global Variables" #define TR_GLOBAL_V "GLOBAL V." #define TR_GLOBAL_VAR "Global Variable" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index dccdeb64b..201573513 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -853,7 +853,7 @@ #define TR_SD_SPEED "Vitesse:" #define TR_SD_SECTORS "Secteurs:" #define TR_SD_SIZE "Taille:" -#define TR_TYPE "Type" +#define TR_TYPE INDENT "Type" #define TR_GLOBAL_VARS "Variables Globales" #define TR_GLOBAL_V "V. GLOBALES" #define TR_GLOBAL_VAR "Variable globale" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 06395e850..987ed947e 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -795,7 +795,7 @@ #define TR_SD_SPEED "Veloc.:" #define TR_SD_SECTORS "Settori:" #define TR_SD_SIZE "Dimens:" -#define TR_TYPE "Tipo" +#define TR_TYPE INDENT "Tipo" #define TR_GLOBAL_VARS "Variabili Globali" #define TR_GLOBAL_V "V.GLOBALI" #define TR_GLOBAL_VAR "Variabile globale" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 89b35da3a..a88fee4ea 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -793,7 +793,7 @@ #define TR_SD_SPEED "Prędkość:" #define TR_SD_SECTORS "Sektory :" #define TR_SD_SIZE "Wielkość:" -#define TR_TYPE TR_SD_TYPE +#define TR_TYPE INDENT TR_SD_TYPE #define TR_GLOBAL_VARS "Zmienne Globalne" #define TR_GLOBAL_V "Zmien.Glob." #define TR_GLOBAL_VAR "Zmienna Globalna" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index bb85bb40b..7c7299a2e 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -795,7 +795,7 @@ #define TR_SD_SPEED "Velocidade" #define TR_SD_SECTORS "Sectores" #define TR_SD_SIZE "Tamanho" -#define TR_TYPE "Tipe" +#define TR_TYPE INDENT "Tipe" #define TR_GLOBAL_VARS "Variaveis" #define TR_GLOBAL_V "GLOBAL V." #define TR_GLOBAL_VAR "Global Variable" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 6461e4d6f..de897e54a 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -795,7 +795,7 @@ #define TR_SD_SPEED "Hastighet:" #define TR_SD_SECTORS "Sektorer:" #define TR_SD_SIZE "Strl:" -#define TR_TYPE "Typ " +#define TR_TYPE INDENT "Typ " #define TR_GLOBAL_VARS "Globala Variabler" #define TR_GLOBAL_V "GLOBAL V." #define TR_GLOBAL_VAR "Global Variabel" From fa33924ec75cdf353a6a9f7ac7e87c488122eaaf Mon Sep 17 00:00:00 2001 From: bsongis Date: Sun, 22 Mar 2015 21:59:43 +0100 Subject: [PATCH 043/100] Preparation for 2.1 firmwares downloads --- companion/src/firmwares/opentx/opentxinterface.h | 7 ++++--- companion/src/mainwindow.cpp | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.h b/companion/src/firmwares/opentx/opentxinterface.h index 7f1f5f369..70c008e32 100644 --- a/companion/src/firmwares/opentx/opentxinterface.h +++ b/companion/src/firmwares/opentx/opentxinterface.h @@ -13,12 +13,13 @@ * GNU General Public License for more details. * */ -#ifndef open9x_interface_h -#define open9x_interface_h + +#ifndef opentx_interface_h +#define opentx_interface_h #include "eeprominterface.h" -#define OPENTX_FIRMWARE_DOWNLOADS "http://downloads-20.open-tx.org/firmware" +#define OPENTX_FIRMWARE_DOWNLOADS "http://downloads-21.open-tx.org/firmware" class RleFile; diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 72cfa5e4c..8d1ad4d7e 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -68,7 +68,7 @@ #include "radiointerface.h" #include "progressdialog.h" -#define OPENTX_COMPANION_DOWNLOADS "http://downloads-20.open-tx.org/companion" +#define OPENTX_COMPANION_DOWNLOADS "http://downloads-21.open-tx.org/companion" #define DONATE_STR "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QUZ48K4SEXDP2" #ifdef __APPLE__ From 863a30a5ed7d481d702e9ab8116e076df0bea420 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Mon, 23 Mar 2015 11:24:10 +0400 Subject: [PATCH 044/100] Cosmetics --- radio/src/gui/9X/helpers.cpp | 3 --- radio/src/gui/Taranis/helpers.cpp | 3 --- 2 files changed, 6 deletions(-) diff --git a/radio/src/gui/9X/helpers.cpp b/radio/src/gui/9X/helpers.cpp index ba3cc6624..3832385fd 100755 --- a/radio/src/gui/9X/helpers.cpp +++ b/radio/src/gui/9X/helpers.cpp @@ -105,9 +105,6 @@ bool isInputSourceAvailable(int source) if (source>=MIXSRC_Rud && source<=MIXSRC_MAX) return true; - if (source>=MIXSRC_Rud && source<=MIXSRC_MAX) - return true; - if (source>=MIXSRC_TrimRud && source=MIXSRC_Rud && source<=MIXSRC_MAX) - return true; - if (source>=MIXSRC_Rud && source<=MIXSRC_MAX) return true; From f59b8f961efe9ce06d2c1ba88bc053baab8c3042 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Mon, 23 Mar 2015 13:32:43 +0400 Subject: [PATCH 045/100] Source popup menu --- radio/src/gui/Taranis/menus.h | 3 +- radio/src/gui/Taranis/navigation.cpp | 119 +++++++++++++++++++++++++++ radio/src/gui/Taranis/popups.cpp | 14 ++-- radio/src/myeeprom.h | 25 +++--- radio/src/translations.cpp | 11 +++ radio/src/translations.h | 11 +++ radio/src/translations/cz.h.txt | 12 +++ radio/src/translations/de.h.txt | 12 +++ radio/src/translations/en.h.txt | 12 +++ radio/src/translations/es.h.txt | 12 +++ radio/src/translations/fi.h.txt | 12 +++ radio/src/translations/fr.h.txt | 12 +++ radio/src/translations/it.h.txt | 12 +++ radio/src/translations/pl.h.txt | 12 +++ radio/src/translations/pt.h.txt | 12 +++ radio/src/translations/se.h.txt | 12 +++ 16 files changed, 284 insertions(+), 19 deletions(-) diff --git a/radio/src/gui/Taranis/menus.h b/radio/src/gui/Taranis/menus.h index 6640661ea..34cf838d0 100755 --- a/radio/src/gui/Taranis/menus.h +++ b/radio/src/gui/Taranis/menus.h @@ -326,7 +326,8 @@ extern uint8_t s_warning_info_flags; #define NAVIGATION_MENUS #define MENU_ADD_ITEM(s) s_menu[s_menu_count++] = s -#define MENU_MAX_LINES 6 +#define MENU_MAX_LINES 11 +#define MENU_MAX_DISPLAY_LINES 6 #define MENU_ADD_SD_ITEM(s) MENU_ADD_ITEM(s) #define MENU_LINE_LENGTH (LEN_MODEL_NAME+12) extern const char *s_menu[MENU_MAX_LINES]; diff --git a/radio/src/gui/Taranis/navigation.cpp b/radio/src/gui/Taranis/navigation.cpp index b4ace4091..93d4d0e78 100755 --- a/radio/src/gui/Taranis/navigation.cpp +++ b/radio/src/gui/Taranis/navigation.cpp @@ -42,6 +42,7 @@ horzpos_t m_posHorz; int8_t s_editMode; uint8_t s_noHi; uint8_t calibrationState; +int s_source = MIXSRC_NONE; #if defined(AUTOSWITCH) int8_t checkIncDecMovedSwitch(int8_t val) @@ -70,6 +71,61 @@ INIT_STOPS(stops100, 3, -100, 0, 100) INIT_STOPS(stops1000, 3, -1000, 0, 1000) INIT_STOPS(stopsSwitch, 15, SWSRC_FIRST, CATEGORY_END(-SWSRC_FIRST_LOGICAL_SWITCH), CATEGORY_END(-SWSRC_FIRST_TRIM), CATEGORY_END(-SWSRC_LAST_SWITCH+1), 0, CATEGORY_END(SWSRC_LAST_SWITCH), CATEGORY_END(SWSRC_FIRST_TRIM-1), CATEGORY_END(SWSRC_FIRST_LOGICAL_SWITCH-1), SWSRC_LAST) +void onLongEnterPress(const char *result) +{ + if (result == STR_MENU_INPUTS) { + for (int i = MIXSRC_FIRST_INPUT; i <= MIXSRC_LAST_INPUT; i++) { + if (isInputAvailable(i)) { + s_source = i; + break; + } + } + } +#if defined(LUA_MODEL_SCRIPTS) + if (result == STR_MENU_LUA) { + for (int i = MIXSRC_FIRST_LUA; i <= MIXSRC_LAST_LUA; i++) { + if (isSourceAvailable(i)) { + s_source = i; + break; + } + } + } +#endif + if (result == STR_MENU_STICKS) + s_source = MIXSRC_FIRST_STICK; + if (result == STR_MENU_POTS) + s_source = MIXSRC_FIRST_POT; + if (result == STR_MENU_MAX) + s_source = MIXSRC_MAX; + if (result == STR_MENU_HELI) + s_source = MIXSRC_FIRST_HELI; + if (result == STR_MENU_TRIMS) + s_source = MIXSRC_FIRST_TRIM; + if (result == STR_MENU_SWITCHES) + s_source = MIXSRC_FIRST_SWITCH; + if (result == STR_MENU_TRAINER) + s_source = MIXSRC_FIRST_TRAINER; + + if (result == STR_MENU_CHANNELS) { + for (int i = MIXSRC_FIRST_CH; i <= MIXSRC_LAST_CH; i++) { + if (isSourceAvailable(i)) { + s_source = i; + break; + } + } + } + + if (result == STR_MENU_TELEMETRY) { + for (int i = 0; i < TELEM_VALUES_MAX; i++) { + TelemetrySensor * sensor = & g_model.telemetrySensors[i]; + if (sensor->isAvailable()) { + s_source = MIXSRC_FIRST_TELEM + 3*i; + break; + } + } + } +} + int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int i_flags, IsValueAvailable isValueAvailable, const CheckIncDecStops &stops) { int newval = val; @@ -207,6 +263,68 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int else { checkIncDec_Ret = 0; } + + if (i_flags & INCDEC_SOURCE) { + if (event == EVT_KEY_LONG(KEY_ENTER)) { + killEvents(event); + s_source = MIXSRC_NONE; + + if (i_min <= MIXSRC_FIRST_INPUT && i_max >= MIXSRC_FIRST_INPUT) { + bool available = false; + for (int i = MIXSRC_FIRST_INPUT; i <= MIXSRC_LAST_INPUT; i++) { + if (isInputAvailable(i)) { + available = true; + break; + } + } + if (available) + MENU_ADD_ITEM(STR_MENU_INPUTS); + } +#if defined(LUA_MODEL_SCRIPTS) + if (i_min <= MIXSRC_FIRST_LUA && i_max >= MIXSRC_FIRST_LUA) { + bool available = false; + for (int i = MIXSRC_FIRST_LUA; i <= MIXSRC_LAST_LUA; i++) { + if (isSourceAvailable(i)) { + available = true; + break; + } + } + if (available) + MENU_ADD_ITEM(STR_MENU_LUA); + } +#endif + if (i_min <= MIXSRC_FIRST_STICK && i_max >= MIXSRC_FIRST_STICK) MENU_ADD_ITEM(STR_MENU_STICKS); + if (i_min <= MIXSRC_FIRST_POT && i_max >= MIXSRC_FIRST_POT) MENU_ADD_ITEM(STR_MENU_POTS); + if (i_min <= MIXSRC_MAX && i_max >= MIXSRC_MAX) MENU_ADD_ITEM(STR_MENU_MAX); +#if defined(HELI) + if (i_min <= MIXSRC_FIRST_HELI && i_max >= MIXSRC_FIRST_HELI) MENU_ADD_ITEM(STR_MENU_HELI); +#endif + if (i_min <= MIXSRC_FIRST_TRIM && i_max >= MIXSRC_FIRST_TRIM) MENU_ADD_ITEM(STR_MENU_TRIMS); + if (i_min <= MIXSRC_FIRST_SWITCH && i_max >= MIXSRC_FIRST_SWITCH) MENU_ADD_ITEM(STR_MENU_SWITCHES); + if (i_min <= MIXSRC_FIRST_TRAINER && i_max >= MIXSRC_FIRST_TRAINER) MENU_ADD_ITEM(STR_MENU_TRAINER); + if (i_min <= MIXSRC_FIRST_CH && i_max >= MIXSRC_FIRST_CH) MENU_ADD_ITEM(STR_MENU_CHANNELS); + + if (i_min <= MIXSRC_FIRST_TELEM && i_max >= MIXSRC_FIRST_TELEM) { + bool available = false; + for (int i = 0; i < TELEM_VALUES_MAX; i++) { + TelemetrySensor * sensor = & g_model.telemetrySensors[i]; + if (sensor->isAvailable()) { + available = true; + break; + } + } + if (available) + MENU_ADD_ITEM(STR_MENU_TELEMETRY); + } + menuHandler = onLongEnterPress; + } + if (s_source != MIXSRC_NONE) { + newval = s_source; + if (s_source != MIXSRC_MAX) + s_editMode = 1; + s_source = MIXSRC_NONE; + } + } return newval; } @@ -229,6 +347,7 @@ void onLongMenuPress(const char *result) } } + tmr10ms_t menuEntryTime; void check(const char *name, check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t menuTabSize, const pm_uint8_t *horTab, uint8_t horTabMax, vertpos_t rowcount, uint8_t flags) diff --git a/radio/src/gui/Taranis/popups.cpp b/radio/src/gui/Taranis/popups.cpp index 36646b54f..895d9c97b 100755 --- a/radio/src/gui/Taranis/popups.cpp +++ b/radio/src/gui/Taranis/popups.cpp @@ -127,18 +127,18 @@ const char * displayMenu(uint8_t event) { const char * result = NULL; - uint8_t display_count = min(s_menu_count, (uint16_t)MENU_MAX_LINES); + uint8_t display_count = min(s_menu_count, (uint16_t)MENU_MAX_DISPLAY_LINES); uint8_t y = (display_count >= 5 ? MENU_Y - FH - 1 : MENU_Y); drawFilledRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2, SOLID, ERASE); lcd_rect(MENU_X, y, MENU_W, display_count * (FH+1) + 2); for (uint8_t i=0; i display_count) { - displayScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_LINES * (FH+1), s_menu_offset, s_menu_count, MENU_MAX_LINES); + displayScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_LINES * (FH+1), s_menu_offset, s_menu_count, display_count); } switch(event) { @@ -152,9 +152,9 @@ const char * displayMenu(uint8_t event) result = STR_UPDATE_LIST; } else { - s_menu_item = display_count - 1; - if (s_menu_count > MENU_MAX_LINES) { - s_menu_offset = s_menu_count - display_count; + s_menu_item = min(display_count, (uint8_t)MENU_MAX_DISPLAY_LINES)-1; + if (s_menu_count > MENU_MAX_DISPLAY_LINES) { + s_menu_offset = s_menu_count - MENU_MAX_DISPLAY_LINES; result = STR_UPDATE_LIST; } } @@ -179,7 +179,7 @@ const char * displayMenu(uint8_t event) break; CASE_EVT_ROTARY_BREAK case EVT_KEY_BREAK(KEY_ENTER): - result = s_menu[s_menu_item]; + result = s_menu[s_menu_item+s_menu_offset]; // no break case EVT_KEY_BREAK(KEY_EXIT): s_menu_count = 0; diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 383422e50..af4a513d7 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -1766,10 +1766,11 @@ enum MixSources { MIXSRC_LAST_LUA = MIXSRC_FIRST_LUA+(MAX_SCRIPTS*MAX_SCRIPT_OUTPUTS)-1, #endif - MIXSRC_Rud, LUA_EXPORT("rud", "Rudder") - MIXSRC_Ele, LUA_EXPORT("ele", "Elevator") - MIXSRC_Thr, LUA_EXPORT("thr", "Throttle") - MIXSRC_Ail, LUA_EXPORT("ail", "Aileron") + MIXSRC_FIRST_STICK, + MIXSRC_Rud = MIXSRC_FIRST_STICK, LUA_EXPORT("rud", "Rudder") + MIXSRC_Ele, LUA_EXPORT("ele", "Elevator") + MIXSRC_Thr, LUA_EXPORT("thr", "Throttle") + MIXSRC_Ail, LUA_EXPORT("ail", "Aileron") MIXSRC_FIRST_POT, #if defined(PCBTARANIS) @@ -1812,14 +1813,16 @@ enum MixSources { MIXSRC_MAX, - MIXSRC_CYC1, LUA_EXPORT("cyc1", "Cyclic 1") - MIXSRC_CYC2, LUA_EXPORT("cyc2", "Cyclic 2") - MIXSRC_CYC3, LUA_EXPORT("cyc3", "Cyclic 3") + MIXSRC_FIRST_HELI, + MIXSRC_CYC1 = MIXSRC_FIRST_HELI, LUA_EXPORT("cyc1", "Cyclic 1") + MIXSRC_CYC2, LUA_EXPORT("cyc2", "Cyclic 2") + MIXSRC_CYC3, LUA_EXPORT("cyc3", "Cyclic 3") - MIXSRC_TrimRud, LUA_EXPORT("trim-rud", "Rudder trim") - MIXSRC_TrimEle, LUA_EXPORT("trim-ele", "Elevator trim") - MIXSRC_TrimThr, LUA_EXPORT("trim-thr", "Throttle trim") - MIXSRC_TrimAil, LUA_EXPORT("trim-ail", "Aileron trim") + MIXSRC_FIRST_TRIM, + MIXSRC_TrimRud = MIXSRC_FIRST_TRIM, LUA_EXPORT("trim-rud", "Rudder trim") + MIXSRC_TrimEle, LUA_EXPORT("trim-ele", "Elevator trim") + MIXSRC_TrimThr, LUA_EXPORT("trim-thr", "Throttle trim") + MIXSRC_TrimAil, LUA_EXPORT("trim-ail", "Aileron trim") MIXSRC_FIRST_SWITCH, diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 8414e8863..fe3d2aeef 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -588,6 +588,17 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR; const pm_char STR_SCRIPT[] PROGMEM = TR_SCRIPT; const pm_char STR_INPUTS[] PROGMEM = TR_INPUTS; const pm_char STR_OUTPUTS[] PROGMEM = TR_OUTPUTS; + const pm_char STR_MENU_INPUTS[] PROGMEM = TR_MENU_INPUTS; + const pm_char STR_MENU_LUA[] PROGMEM = TR_MENU_LUA; + const pm_char STR_MENU_STICKS[] PROGMEM = TR_MENU_STICKS; + const pm_char STR_MENU_POTS[] PROGMEM = TR_MENU_POTS; + const pm_char STR_MENU_MAX[] PROGMEM = TR_MENU_MAX; + const pm_char STR_MENU_HELI[] PROGMEM = TR_MENU_HELI; + const pm_char STR_MENU_TRIMS[] PROGMEM = TR_MENU_TRIMS; + const pm_char STR_MENU_SWITCHES[] PROGMEM = TR_MENU_SWITCHES; + const pm_char STR_MENU_TRAINER[] PROGMEM = TR_MENU_TRAINER; + const pm_char STR_MENU_CHANNELS[] PROGMEM = TR_MENU_CHANNELS; + const pm_char STR_MENU_TELEMETRY[] PROGMEM = TR_MENU_TELEMETRY; #endif #if MENUS_LOCK == 1 diff --git a/radio/src/translations.h b/radio/src/translations.h index 74eb7f43d..c0e857fc6 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -798,6 +798,17 @@ extern const pm_char STR_BLCOLOR[]; extern const pm_char STR_SCRIPT[]; extern const pm_char STR_INPUTS[]; extern const pm_char STR_OUTPUTS[]; + extern const pm_char STR_MENU_INPUTS[]; + extern const pm_char STR_MENU_LUA[]; + extern const pm_char STR_MENU_STICKS[]; + extern const pm_char STR_MENU_POTS[]; + extern const pm_char STR_MENU_MAX[]; + extern const pm_char STR_MENU_HELI[]; + extern const pm_char STR_MENU_TRIMS[]; + extern const pm_char STR_MENU_SWITCHES[]; + extern const pm_char STR_MENU_TRAINER[]; + extern const pm_char STR_MENU_CHANNELS[]; + extern const pm_char STR_MENU_TELEMETRY[]; #endif #if MENUS_LOCK == 1 diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 7794b600a..d1a5740f6 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1065,6 +1065,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "Inputs" +#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "MAX" +#define TR_MENU_HELI "Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "Trainer" +#define TR_MENU_CHANNELS "Channels" +#define TR_MENU_TELEMETRY "Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 6ea81624b..78bc14793 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1064,6 +1064,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "Inputs" +#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "MAX" +#define TR_MENU_HELI "Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "Trainer" +#define TR_MENU_CHANNELS "Channels" +#define TR_MENU_TELEMETRY "Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index ec3a2f59d..671926bde 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1064,6 +1064,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "Inputs" +#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "MAX" +#define TR_MENU_HELI "Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "Trainer" +#define TR_MENU_CHANNELS "Channels" +#define TR_MENU_TELEMETRY "Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index f1e1c24e8..aa401c9be 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1000,6 +1000,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "Inputs" +#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "MAX" +#define TR_MENU_HELI "Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "Trainer" +#define TR_MENU_CHANNELS "Channels" +#define TR_MENU_TELEMETRY "Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 8b35c8ba6..f8840baf6 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1000,6 +1000,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "Inputs" +#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "MAX" +#define TR_MENU_HELI "Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "Trainer" +#define TR_MENU_CHANNELS "Channels" +#define TR_MENU_TELEMETRY "Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 201573513..d7a743ac0 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1060,6 +1060,18 @@ #define TR_FILTER "Filtrage" #define TR_TELEMETRYFULL "Plus de capteurs libres!" +#define TR_MENU_INPUTS "Entrées" +#define TR_MENU_LUA "Scripts Lua" +#define TR_MENU_STICKS "\307Manches" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "MAX" +#define TR_MENU_HELI "Cyclique" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Inters" +#define TR_MENU_TRAINER "Ecolage" +#define TR_MENU_CHANNELS "Canaux" +#define TR_MENU_TELEMETRY "Télémesure" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 987ed947e..fca313d46 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1000,6 +1000,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "Inputs" +#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "MAX" +#define TR_MENU_HELI "Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "Trainer" +#define TR_MENU_CHANNELS "Channels" +#define TR_MENU_TELEMETRY "Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a88fee4ea..9d6f0de17 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -998,6 +998,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "Inputs" +#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "MAX" +#define TR_MENU_HELI "Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "Trainer" +#define TR_MENU_CHANNELS "Channels" +#define TR_MENU_TELEMETRY "Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 7c7299a2e..ed4c5044f 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1000,6 +1000,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "Inputs" +#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "MAX" +#define TR_MENU_HELI "Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "Trainer" +#define TR_MENU_CHANNELS "Channels" +#define TR_MENU_TELEMETRY "Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index de897e54a..82bfe4e87 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1000,6 +1000,18 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" +#define TR_MENU_INPUTS "Inputs" +#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_STICKS "\307Sticks" +#define TR_MENU_POTS "\310Pots" +#define TR_MENU_MAX "MAX" +#define TR_MENU_HELI "Cyclic" +#define TR_MENU_TRIMS "\313Trims" +#define TR_MENU_SWITCHES "\312Switches" +#define TR_MENU_TRAINER "Trainer" +#define TR_MENU_CHANNELS "Channels" +#define TR_MENU_TELEMETRY "Telemetry" + #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" #define ZSTR_A1 "A1" From 372f6e6d7b1799413096971b247f154ddffad476 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Mon, 23 Mar 2015 14:01:26 +0400 Subject: [PATCH 046/100] Refactoring --- radio/src/gui/Taranis/helpers.cpp | 11 +++++++ radio/src/gui/Taranis/menus.h | 1 + radio/src/gui/Taranis/navigation.cpp | 49 +++++----------------------- 3 files changed, 20 insertions(+), 41 deletions(-) diff --git a/radio/src/gui/Taranis/helpers.cpp b/radio/src/gui/Taranis/helpers.cpp index ac1037337..9e772d379 100755 --- a/radio/src/gui/Taranis/helpers.cpp +++ b/radio/src/gui/Taranis/helpers.cpp @@ -347,3 +347,14 @@ bool modelHasNotes() return isFileAvailable(filename); } +int getFirstAvailableSource(int min, int max, bool (*func)(int)) +{ + int retval = MIXSRC_NONE; + for (int i = min; i <= max; i++) { + if ((*func)(i)) { + retval = i; + break; + } + } + return retval; +} diff --git a/radio/src/gui/Taranis/menus.h b/radio/src/gui/Taranis/menus.h index 34cf838d0..ddb639f46 100755 --- a/radio/src/gui/Taranis/menus.h +++ b/radio/src/gui/Taranis/menus.h @@ -202,6 +202,7 @@ bool isSwitchAvailableInCustomFunctions(int swtch); bool isSwitchAvailableInMixes(int swtch); bool isSwitchAvailableInTimers(int swtch); bool isModuleAvailable(int module); +int getFirstAvailableSource(int min, int max, bool (*func)(int)); #define AUTOSWITCH_ENTER_LONG() (attr && event==EVT_KEY_LONG(KEY_ENTER)) #define CHECK_INCDEC_SWITCH(event, var, min, max, flags, available) \ var = checkIncDec(event, var, min, max, (flags)|INCDEC_SWITCH, available) diff --git a/radio/src/gui/Taranis/navigation.cpp b/radio/src/gui/Taranis/navigation.cpp index 93d4d0e78..3a1076d4b 100755 --- a/radio/src/gui/Taranis/navigation.cpp +++ b/radio/src/gui/Taranis/navigation.cpp @@ -73,23 +73,11 @@ INIT_STOPS(stopsSwitch, 15, SWSRC_FIRST, CATEGORY_END(-SWSRC_FIRST_LOGICAL_SWITC void onLongEnterPress(const char *result) { - if (result == STR_MENU_INPUTS) { - for (int i = MIXSRC_FIRST_INPUT; i <= MIXSRC_LAST_INPUT; i++) { - if (isInputAvailable(i)) { - s_source = i; - break; - } - } - } + if (result == STR_MENU_INPUTS) + s_source = getFirstAvailableSource(MIXSRC_FIRST_INPUT, MIXSRC_LAST_INPUT, isInputAvailable)+1; #if defined(LUA_MODEL_SCRIPTS) - if (result == STR_MENU_LUA) { - for (int i = MIXSRC_FIRST_LUA; i <= MIXSRC_LAST_LUA; i++) { - if (isSourceAvailable(i)) { - s_source = i; - break; - } - } - } + if (result == STR_MENU_LUA) + s_source = getFirstAvailableSource(MIXSRC_FIRST_LUA, MIXSRC_LAST_LUA, isSourceAvailable); #endif if (result == STR_MENU_STICKS) s_source = MIXSRC_FIRST_STICK; @@ -105,15 +93,8 @@ void onLongEnterPress(const char *result) s_source = MIXSRC_FIRST_SWITCH; if (result == STR_MENU_TRAINER) s_source = MIXSRC_FIRST_TRAINER; - - if (result == STR_MENU_CHANNELS) { - for (int i = MIXSRC_FIRST_CH; i <= MIXSRC_LAST_CH; i++) { - if (isSourceAvailable(i)) { - s_source = i; - break; - } - } - } + if (result == STR_MENU_CHANNELS) + s_source = getFirstAvailableSource(MIXSRC_FIRST_CH, MIXSRC_LAST_CH, isSourceAvailable); if (result == STR_MENU_TELEMETRY) { for (int i = 0; i < TELEM_VALUES_MAX; i++) { @@ -270,26 +251,12 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int s_source = MIXSRC_NONE; if (i_min <= MIXSRC_FIRST_INPUT && i_max >= MIXSRC_FIRST_INPUT) { - bool available = false; - for (int i = MIXSRC_FIRST_INPUT; i <= MIXSRC_LAST_INPUT; i++) { - if (isInputAvailable(i)) { - available = true; - break; - } - } - if (available) + if (getFirstAvailableSource(MIXSRC_FIRST_INPUT, MIXSRC_LAST_INPUT, isInputAvailable) != MIXSRC_NONE) MENU_ADD_ITEM(STR_MENU_INPUTS); } #if defined(LUA_MODEL_SCRIPTS) if (i_min <= MIXSRC_FIRST_LUA && i_max >= MIXSRC_FIRST_LUA) { - bool available = false; - for (int i = MIXSRC_FIRST_LUA; i <= MIXSRC_LAST_LUA; i++) { - if (isSourceAvailable(i)) { - available = true; - break; - } - } - if (available) + if (getFirstAvailableSource(MIXSRC_FIRST_LUA, MIXSRC_LAST_LUA, isSourceAvailable) != MIXSRC_NONE) MENU_ADD_ITEM(STR_MENU_LUA); } #endif From ca0c5c02b0b0da3eff570ccb21e498cd59c92080 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Mon, 23 Mar 2015 20:02:49 +0100 Subject: [PATCH 047/100] Re #2160: create only one timer for updateSdsyncAction() --- companion/src/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 8d1ad4d7e..56387f25e 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -121,6 +121,7 @@ MainWindow::MainWindow(): } QTimer::singleShot(updateDelay, this, SLOT(doAutoUpdates())); QTimer::singleShot(updateDelay, this, SLOT(displayWarnings())); + updateSdsyncAction(); QStringList strl = QApplication::arguments(); QString str; @@ -916,7 +917,6 @@ void MainWindow::updateMenus() printAct->setEnabled(hasSelection); loadbackupAct->setEnabled(hasMdiChild); compareAct->setEnabled(activeMdiChild()); - updateSdsyncAction(); updateRecentFileActions(); updateProfilesActions(); updateLanguageActions(); From 5d6e86e2adc4857bf95f618f19899e7452668b79 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Tue, 24 Mar 2015 10:05:27 +0400 Subject: [PATCH 048/100] Cosmetics --- radio/src/gui/Taranis/helpers.cpp | 2 +- radio/src/gui/Taranis/navigation.cpp | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/radio/src/gui/Taranis/helpers.cpp b/radio/src/gui/Taranis/helpers.cpp index 9e772d379..a2ae48121 100755 --- a/radio/src/gui/Taranis/helpers.cpp +++ b/radio/src/gui/Taranis/helpers.cpp @@ -354,7 +354,7 @@ int getFirstAvailableSource(int min, int max, bool (*func)(int)) if ((*func)(i)) { retval = i; break; - } } + } return retval; } diff --git a/radio/src/gui/Taranis/navigation.cpp b/radio/src/gui/Taranis/navigation.cpp index 3a1076d4b..18a7308b2 100755 --- a/radio/src/gui/Taranis/navigation.cpp +++ b/radio/src/gui/Taranis/navigation.cpp @@ -76,27 +76,27 @@ void onLongEnterPress(const char *result) if (result == STR_MENU_INPUTS) s_source = getFirstAvailableSource(MIXSRC_FIRST_INPUT, MIXSRC_LAST_INPUT, isInputAvailable)+1; #if defined(LUA_MODEL_SCRIPTS) - if (result == STR_MENU_LUA) + else if (result == STR_MENU_LUA) s_source = getFirstAvailableSource(MIXSRC_FIRST_LUA, MIXSRC_LAST_LUA, isSourceAvailable); #endif - if (result == STR_MENU_STICKS) + else if (result == STR_MENU_STICKS) s_source = MIXSRC_FIRST_STICK; - if (result == STR_MENU_POTS) + else if (result == STR_MENU_POTS) s_source = MIXSRC_FIRST_POT; - if (result == STR_MENU_MAX) + else if (result == STR_MENU_MAX) s_source = MIXSRC_MAX; - if (result == STR_MENU_HELI) + else if (result == STR_MENU_HELI) s_source = MIXSRC_FIRST_HELI; - if (result == STR_MENU_TRIMS) + else if (result == STR_MENU_TRIMS) s_source = MIXSRC_FIRST_TRIM; - if (result == STR_MENU_SWITCHES) + else if (result == STR_MENU_SWITCHES) s_source = MIXSRC_FIRST_SWITCH; - if (result == STR_MENU_TRAINER) + else if (result == STR_MENU_TRAINER) s_source = MIXSRC_FIRST_TRAINER; - if (result == STR_MENU_CHANNELS) + else if (result == STR_MENU_CHANNELS) s_source = getFirstAvailableSource(MIXSRC_FIRST_CH, MIXSRC_LAST_CH, isSourceAvailable); - if (result == STR_MENU_TELEMETRY) { + else if (result == STR_MENU_TELEMETRY) { for (int i = 0; i < TELEM_VALUES_MAX; i++) { TelemetrySensor * sensor = & g_model.telemetrySensors[i]; if (sensor->isAvailable()) { From a966408570aa0a417218324a6d9c0fec0868a05c Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Tue, 24 Mar 2015 10:39:30 +0400 Subject: [PATCH 049/100] Martin's graphics --- radio/src/fonts/std/font_05x07_extra.png | Bin 331 -> 15200 bytes radio/src/translations/cz.h.txt | 14 +++++++------- radio/src/translations/de.h.txt | 14 +++++++------- radio/src/translations/en.h.txt | 14 +++++++------- radio/src/translations/es.h.txt | 12 ++++++------ radio/src/translations/fi.h.txt | 14 +++++++------- radio/src/translations/fr.h.txt | 14 +++++++------- radio/src/translations/it.h.txt | 14 +++++++------- radio/src/translations/pl.h.txt | 14 +++++++------- radio/src/translations/pt.h.txt | 14 +++++++------- radio/src/translations/se.h.txt | 14 +++++++------- 11 files changed, 69 insertions(+), 69 deletions(-) diff --git a/radio/src/fonts/std/font_05x07_extra.png b/radio/src/fonts/std/font_05x07_extra.png index c6f1f39fff0adf572dd3a6cfd9ebc93b672ad0bb..0d75d0b1b217984df3165b284bce4a2df48e2b2d 100644 GIT binary patch literal 15200 zcmeI3e{2(F7{?Du3=A+qOqgi!QbLr?>)o~M+Fsg{u@1IK$Fg;9BO+Yy-fow*clGW{ zy9E*>(Vzy2kmv-&U`!-R0F|Jk#y?Pr5hX|>K_jRUjY@)vKjJT(?_Gc0-nMV1V*KZA z(%wDq^FH6_?(;s++xzDp?CD-LuVGOGMN#v*I-|YtxE_9I&AJx;K6PTrF?g7r=^QdB zYR&@dJA>M_r;(z9pDOV|b1=4AkhHX0l(htK=hGQDo1#L?^BGYZ1ty&U!-^VqU4HFN z7p=%)*MKj^#WL++MClyYLEm_HTpAyhg0gFQq#=|SpgYm-q-36`fsN_&}O*+>){wKDEPbr=b?)q zSEK=+g>*S7^hQ?}(?Kij8Zpg`z_Phq&YknRHGP=ngTWxnd03B!fioCmOf|(kqZ&&J zA|;(DFeF{cn2M&-madr4vS!%jvJ#a)#rsNU%868?$PQ9u^J0eO-5gshNS4YmnXI0& zFHM$MkOFC-ng)#HYsO_pG*dH1v^puv?z)NLn#5w|+%>N^ovxYMFgrFv1VyAZBaQf2 z2C%)r(6YJ&IyS;vSyJonO(j`boGD6{r|z|byizC3@)W}CQYfrY2;QsEt^?83^th&_ zB84jJDIuiW+wH2NZyQilS<4yALM$3mS?`J(h>9kNSoO&8JmYDNdw7B81uxgkwFn&N z5Gl+=G-8^pB*#h`K8Eu$o|ZVz2|O(8R;PwzCaMAZM;1+SS}M-D4jow%lA4|t&4`i~ zhXI>WheK>-&@r=IRYJR#(sX!PAmRIO6OhD!-|tPf%09mhF&1-%S4l@TDQk60QCf!59;hAgiz1UqCO9S# zXz@YmL@UGl{m@AGIX($W(vI*d={33ncRDfUm}6c2-%U|NrYcpZV!-+wbJQ)YUVAU= z1NTfFEjdz(y(eWv-2hg{g>Ggu@)G$; F(5O8E~K!Vow9 zyJeVOAN_-6sJAEmf6Gv*VrfKFhk+bnO9fmSnBK}2)^loSl{SRxP7GOpM*{3(SW%+g zJ$#6*8mnY3%pbJ6F_pFF`#l`|u)OtK40XEE&>?)N(~X8!BKuXvjChLKkYPuZ^`BYT z(EH%y9f-90d|qFOMTgOd9wiS_gHZ+UyoR-(1WPffqh{bxB`{FTWyd+ji*bdOay*CG zEm#g)&1p=U(ZGw#D-wU%IpHy5roeIen9p z7cY65qUo7yUtae>d|8ZcoZFSU{Kna}@16W;G~cl6_ahVMf_r~U9__zb{aWbTEbn}Q zPOXYx61Md&-T&gNyFY6j`Egr@3pM14}}W1qY7J=odS> zj~?18_U}2XpFDW{=ltQfvduTn=s7WQ&7v#KE2IybUSGWF$f?<ai>Jdg z`v+Ekbwgvcd-&wqTbADRdE&bRFP%PrZq2h3+t$6ZKi2qt*Y4-%Jp6uk`}Ns(_qis_ z;3wPXKXQ28LthLWdh&z&-`Vlpv7L`TeYYn!|H9@gcQsA27aqSA-udL@OzOynJDL-J S?AruQs;i?rdT_;t`~Cu|(3v0r delta 319 zcmaD*cACk!Gr-TCmrII^fq{Y7)59eQNZSB02L~IFTq-{2B#>fD@^*J&_z!{$_AZ}1 zQBk~}fxX1j*OmP~GpCS>u}j~vbwFjZnIRD+&iT2ysd*(pE(3#eQEFmIYKlU6W=V#E zyQgnJie4%^P<*|oi(`nz>7${6e60o?+Q)v!@BFueb)$h#jsGN9mAeaMZ}+G$9yn95 z>vG7O>uG71>t|WdeqH%SZimtf@i$^yXMNsQzd}X7CP}v1Cqi^VftFVdQj@c=p2>{o8fAs(W diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index d1a5740f6..bb255f023 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1065,17 +1065,17 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" -#define TR_MENU_INPUTS "Inputs" -#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" -#define TR_MENU_MAX "MAX" -#define TR_MENU_HELI "Cyclic" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Switches" -#define TR_MENU_TRAINER "Trainer" -#define TR_MENU_CHANNELS "Channels" -#define TR_MENU_TELEMETRY "Telemetry" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 78bc14793..87e1f55bb 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1064,17 +1064,17 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" -#define TR_MENU_INPUTS "Inputs" -#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" -#define TR_MENU_MAX "MAX" -#define TR_MENU_HELI "Cyclic" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Switches" -#define TR_MENU_TRAINER "Trainer" -#define TR_MENU_CHANNELS "Channels" -#define TR_MENU_TELEMETRY "Telemetry" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 671926bde..53d1a1591 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1064,17 +1064,17 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" -#define TR_MENU_INPUTS "Inputs" -#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" -#define TR_MENU_MAX "MAX" -#define TR_MENU_HELI "Cyclic" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Switches" -#define TR_MENU_TRAINER "Trainer" -#define TR_MENU_CHANNELS "Channels" -#define TR_MENU_TELEMETRY "Telemetry" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index aa401c9be..2e9e89c91 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1000,17 +1000,17 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" -#define TR_MENU_INPUTS "Inputs" +#define TR_MENU_INPUTS "\314Inputs" #define TR_MENU_LUA "Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" -#define TR_MENU_MAX "MAX" -#define TR_MENU_HELI "Cyclic" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Switches" -#define TR_MENU_TRAINER "Trainer" -#define TR_MENU_CHANNELS "Channels" -#define TR_MENU_TELEMETRY "Telemetry" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\318Channels" +#define TR_MENU_TELEMETRY "\319Telemetry" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index f8840baf6..b109c2fee 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1000,17 +1000,17 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" -#define TR_MENU_INPUTS "Inputs" -#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" -#define TR_MENU_MAX "MAX" -#define TR_MENU_HELI "Cyclic" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Switches" -#define TR_MENU_TRAINER "Trainer" -#define TR_MENU_CHANNELS "Channels" -#define TR_MENU_TELEMETRY "Telemetry" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index d7a743ac0..0930dab45 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1060,17 +1060,17 @@ #define TR_FILTER "Filtrage" #define TR_TELEMETRYFULL "Plus de capteurs libres!" -#define TR_MENU_INPUTS "Entrées" -#define TR_MENU_LUA "Scripts Lua" +#define TR_MENU_INPUTS "\314Entrées" +#define TR_MENU_LUA "\322Scripts Lua" #define TR_MENU_STICKS "\307Manches" #define TR_MENU_POTS "\310Pots" -#define TR_MENU_MAX "MAX" -#define TR_MENU_HELI "Cyclique" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclique" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Inters" -#define TR_MENU_TRAINER "Ecolage" -#define TR_MENU_CHANNELS "Canaux" -#define TR_MENU_TELEMETRY "Télémesure" +#define TR_MENU_TRAINER "\317Ecolage" +#define TR_MENU_CHANNELS "\320Canaux" +#define TR_MENU_TELEMETRY "\321Télémesure" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index fca313d46..56a8b27d5 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1000,17 +1000,17 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" -#define TR_MENU_INPUTS "Inputs" -#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" -#define TR_MENU_MAX "MAX" -#define TR_MENU_HELI "Cyclic" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Switches" -#define TR_MENU_TRAINER "Trainer" -#define TR_MENU_CHANNELS "Channels" -#define TR_MENU_TELEMETRY "Telemetry" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 9d6f0de17..f462963fa 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -998,17 +998,17 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" -#define TR_MENU_INPUTS "Inputs" -#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" -#define TR_MENU_MAX "MAX" -#define TR_MENU_HELI "Cyclic" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Switches" -#define TR_MENU_TRAINER "Trainer" -#define TR_MENU_CHANNELS "Channels" -#define TR_MENU_TELEMETRY "Telemetry" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index ed4c5044f..01a2fd704 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1000,17 +1000,17 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" -#define TR_MENU_INPUTS "Inputs" -#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" -#define TR_MENU_MAX "MAX" -#define TR_MENU_HELI "Cyclic" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Switches" -#define TR_MENU_TRAINER "Trainer" -#define TR_MENU_CHANNELS "Channels" -#define TR_MENU_TELEMETRY "Telemetry" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 82bfe4e87..3b9d171fc 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1000,17 +1000,17 @@ #define TR_FILTER "Filter" #define TR_TELEMETRYFULL "All telemetry slots full!" -#define TR_MENU_INPUTS "Inputs" -#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_INPUTS "\314Inputs" +#define TR_MENU_LUA "\322Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" -#define TR_MENU_MAX "MAX" -#define TR_MENU_HELI "Cyclic" +#define TR_MENU_MAX "\315MAX" +#define TR_MENU_HELI "\316Cyclic" #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Switches" -#define TR_MENU_TRAINER "Trainer" -#define TR_MENU_CHANNELS "Channels" -#define TR_MENU_TELEMETRY "Telemetry" +#define TR_MENU_TRAINER "\317Trainer" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" From b82e9d54004f43f2161663f68447114e9f44586d Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Tue, 24 Mar 2015 10:54:00 +0400 Subject: [PATCH 050/100] Fix scrollbar --- radio/src/gui/Taranis/popups.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/Taranis/popups.cpp b/radio/src/gui/Taranis/popups.cpp index 895d9c97b..b55afd760 100755 --- a/radio/src/gui/Taranis/popups.cpp +++ b/radio/src/gui/Taranis/popups.cpp @@ -138,7 +138,7 @@ const char * displayMenu(uint8_t event) } if (s_menu_count > display_count) { - displayScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_LINES * (FH+1), s_menu_offset, s_menu_count, display_count); + displayScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), s_menu_offset, s_menu_count, display_count); } switch(event) { From a75ff0187f72fb055721a2498d8f80fb074fcbcd Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 24 Mar 2015 18:27:53 +0100 Subject: [PATCH 051/100] [Taranis] New inputs / mixes created with a default weight = GV1 instead of 100% --- radio/src/gui/Taranis/menu_model_inputs_mixes.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp b/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp index 0b1c082c5..0d85f0c92 100644 --- a/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp +++ b/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp @@ -869,7 +869,7 @@ void menuModelExpoMix(uint8_t expo, uint8_t event) if (cur-s_pgOfs >= 0 && cur-s_pgOfs < NUM_BODY_LINES) { uint8_t attr = ((s_copyMode || sub != cur) ? 0 : INVERS); if (expo) { - ed->weight = GVAR_MENU_ITEM(EXPO_LINE_WEIGHT_POS, y, ed->weight, MIN_EXPO_WEIGHT, 100, attr | (isExpoActive(i) ? BOLD : 0), 0, event); + GVAR_MENU_ITEM(EXPO_LINE_WEIGHT_POS, y, ed->weight, MIN_EXPO_WEIGHT, 100, attr | (isExpoActive(i) ? BOLD : 0), 0, 0); displayExpoLine(y, ed); if (ed->mode!=3) { lcd_putc(EXPO_LINE_SIDE_POS, y, ed->mode == 2 ? 126 : 127); @@ -884,7 +884,7 @@ void menuModelExpoMix(uint8_t expo, uint8_t event) putsMixerSource(MIX_LINE_SRC_POS, y, md->srcRaw, 0); - gvarWeightItem(MIX_LINE_WEIGHT_POS, y, md, attr | (isMixActive(i) ? BOLD : 0), event); + gvarWeightItem(MIX_LINE_WEIGHT_POS, y, md, attr | (isMixActive(i) ? BOLD : 0), 0); displayMixLine(y, md); From 360356b7e479659f920595ac81e272dd7666bb15 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 24 Mar 2015 18:38:44 +0100 Subject: [PATCH 052/100] [Taranis] Shift in telemetry sources allowed in Inputs --- radio/src/gui/Taranis/helpers.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/Taranis/helpers.cpp b/radio/src/gui/Taranis/helpers.cpp index a2ae48121..b2dab0249 100755 --- a/radio/src/gui/Taranis/helpers.cpp +++ b/radio/src/gui/Taranis/helpers.cpp @@ -165,8 +165,13 @@ bool isInputSourceAvailable(int source) if (source>=MIXSRC_FIRST_TRAINER && source<=MIXSRC_LAST_TRAINER) return true; - if (source>=MIXSRC_FIRST_TELEM && source<=MIXSRC_LAST_TELEM) - return isTelemetryFieldAvailable(source-MIXSRC_FIRST_TELEM); + if (source>=MIXSRC_FIRST_TELEM && source<=MIXSRC_LAST_TELEM) { + div_t qr = div(source-MIXSRC_FIRST_TELEM, 3); + if (qr.rem == 0) + return isTelemetryFieldAvailable(qr.quot); + else + return isTelemetryFieldComparisonAvailable(qr.quot); + } return false; } From 9ccb7e672fb4fc8076a7518333de9a89353f9e5a Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 24 Mar 2015 19:41:33 +0100 Subject: [PATCH 053/100] Should fix the problem with the bootloader flash (file extension search was wrong) --- radio/src/gui/Taranis/menu_general_sdmanager.cpp | 2 +- radio/src/strhelpers.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/radio/src/gui/Taranis/menu_general_sdmanager.cpp b/radio/src/gui/Taranis/menu_general_sdmanager.cpp index a88693040..e8df0842c 100755 --- a/radio/src/gui/Taranis/menu_general_sdmanager.cpp +++ b/radio/src/gui/Taranis/menu_general_sdmanager.cpp @@ -321,8 +321,8 @@ void menuGeneralSdManager(uint8_t _event) } } else if (!READ_ONLY() && !strcasecmp(ext, SPORT_FIRMWARE_EXT)) { - MENU_ADD_ITEM(STR_FLASH_INTERNAL_MODULE); MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE); + MENU_ADD_ITEM(STR_FLASH_INTERNAL_MODULE); } } if (!READ_ONLY()) { diff --git a/radio/src/strhelpers.cpp b/radio/src/strhelpers.cpp index 2733a59f2..7074450d8 100644 --- a/radio/src/strhelpers.cpp +++ b/radio/src/strhelpers.cpp @@ -207,8 +207,9 @@ char *strAppendFilename(char *dest, const char *filename, const int size) #define LEN_FILE_EXTENSION 4 char *getFileExtension(char *filename, int size) { - for (int i=0; i(size, strlen(filename)); + for (int i=len; i>=len-LEN_FILE_EXTENSION; --i) { + if (filename[i] == '.') { return &filename[i]; } } From dea8de4ef05d10a720a10d367f0443666c10e239 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 24 Mar 2015 19:43:58 +0100 Subject: [PATCH 054/100] getFileExtension must now always checked against to NULL --- radio/src/gui/Taranis/menu_general_sdmanager.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/Taranis/menu_general_sdmanager.cpp b/radio/src/gui/Taranis/menu_general_sdmanager.cpp index e8df0842c..95257a827 100755 --- a/radio/src/gui/Taranis/menu_general_sdmanager.cpp +++ b/radio/src/gui/Taranis/menu_general_sdmanager.cpp @@ -437,7 +437,10 @@ void menuGeneralSdManager(uint8_t _event) editName(lcdNextPos, y, reusableBuffer.sdmanager.lines[i], SD_SCREEN_FILE_LENGTH-4, _event, attr, 0); if (s_editMode == 0) { unsigned int len = effectiveLen(reusableBuffer.sdmanager.lines[i], SD_SCREEN_FILE_LENGTH-LEN_FILE_EXTENSION); - strAppend(&reusableBuffer.sdmanager.lines[i][len], getFileExtension(reusableBuffer.sdmanager.originalName, sizeof(reusableBuffer.sdmanager.originalName))); + char * ext = getFileExtension(reusableBuffer.sdmanager.originalName, sizeof(reusableBuffer.sdmanager.originalName)); + if (ext) { + strAppend(&reusableBuffer.sdmanager.lines[i][len], ext); + } f_rename(reusableBuffer.sdmanager.originalName, reusableBuffer.sdmanager.lines[i]); REFRESH_FILES(); } From 8cb67d3e2cfc09a7fc3298eef7d05fad4e379a0c Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 24 Mar 2015 19:49:56 +0100 Subject: [PATCH 055/100] Ignore list updated --- radio/src/targets/taranis/bootloader/.gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100755 radio/src/targets/taranis/bootloader/.gitignore diff --git a/radio/src/targets/taranis/bootloader/.gitignore b/radio/src/targets/taranis/bootloader/.gitignore new file mode 100755 index 000000000..eaeb7d8c5 --- /dev/null +++ b/radio/src/targets/taranis/bootloader/.gitignore @@ -0,0 +1,3 @@ +/bootloader_ramBoot.* +/.dep + From 2c204c82311d03436c55c7101d54971e45dfa700 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Tue, 24 Mar 2015 22:42:52 +0400 Subject: [PATCH 056/100] Translations --- radio/src/translations/fr.h.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 0930dab45..7cfcdf132 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -788,7 +788,7 @@ #define TR_REPEAT_AT_ZERO INDENT "Intervalle au zéro" #define TR_POWEROFF "\037\120ARRET..." #define TR_SHUTDOWN "ARRET EN COURS" -#define TR_SAVEMODEL "Saving model settings" +#define TR_SAVEMODEL "Sauvegarde modèle..." #define TR_BATT_CALIB "Calib. Batterie" #define TR_CURRENT_CALIB "Calib. Courant" #define TR_VOLTAGE TR(INDENT "Tension",INDENT "Source Tension") From fa898e19cd7a104629267bb35de13fbae1eb65a8 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 24 Mar 2015 20:30:07 +0100 Subject: [PATCH 057/100] Input scale unit was wrong --- radio/src/gui/Taranis/menu_model_inputs_mixes.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp b/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp index 0d85f0c92..cd3a289a7 100644 --- a/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp +++ b/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp @@ -346,7 +346,7 @@ void menuModelExpoOne(uint8_t event) case EXPO_FIELD_SCALE: lcd_putsLeft(y, STR_SCALE); - putsTelemetryChannelValue(EXPO_ONE_2ND_COLUMN, y, ed->srcRaw - MIXSRC_FIRST_TELEM, convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale), LEFT|attr); + putsTelemetryChannelValue(EXPO_ONE_2ND_COLUMN, y, (ed->srcRaw - MIXSRC_FIRST_TELEM)/3, convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale), LEFT|attr); if (attr) ed->scale = checkIncDec(event, ed->scale, 0, maxTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1), EE_MODEL); break; From 2b4fb9fbe290fed931fb1b614d8693b276ac7c07 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 24 Mar 2015 20:35:08 +0100 Subject: [PATCH 058/100] Same problem with Input curve --- radio/src/gui/Taranis/menu_model_inputs_mixes.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp b/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp index cd3a289a7..9fe344072 100644 --- a/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp +++ b/radio/src/gui/Taranis/menu_model_inputs_mixes.cpp @@ -396,7 +396,7 @@ void menuModelExpoOne(uint8_t event) int x512 = getValue(ed->srcRaw); if (ed->srcRaw >= MIXSRC_FIRST_TELEM) { - putsTelemetryChannelValue(LCD_W-8, 6*FH, ed->srcRaw - MIXSRC_FIRST_TELEM, x512, 0); + putsTelemetryChannelValue(LCD_W-8, 6*FH, (ed->srcRaw - MIXSRC_FIRST_TELEM) / 3, x512, 0); if (ed->scale > 0) x512 = (x512 * 1024) / convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale); } else { From 1236714c04cebf1a145c72ff1f4cd44310f01278 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 24 Mar 2015 20:45:50 +0100 Subject: [PATCH 059/100] No DateTime or GPS in Inputs sources --- radio/src/gui/Taranis/helpers.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/Taranis/helpers.cpp b/radio/src/gui/Taranis/helpers.cpp index b2dab0249..8c0f16ff3 100755 --- a/radio/src/gui/Taranis/helpers.cpp +++ b/radio/src/gui/Taranis/helpers.cpp @@ -167,7 +167,9 @@ bool isInputSourceAvailable(int source) if (source>=MIXSRC_FIRST_TELEM && source<=MIXSRC_LAST_TELEM) { div_t qr = div(source-MIXSRC_FIRST_TELEM, 3); - if (qr.rem == 0) + if (g_model.telemetrySensors[qr.quot].unit >= UNIT_DATETIME) + return false; + else if (qr.rem == 0) return isTelemetryFieldAvailable(qr.quot); else return isTelemetryFieldComparisonAvailable(qr.quot); From ce38605c113cfbb5bc2286309236b8d9e83b988b Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 24 Mar 2015 21:05:11 +0100 Subject: [PATCH 060/100] Cosmetics --- radio/src/gui/Taranis/helpers.cpp | 7 +------ radio/src/telemetry/telemetry.h | 4 +--- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/radio/src/gui/Taranis/helpers.cpp b/radio/src/gui/Taranis/helpers.cpp index 8c0f16ff3..7174326b3 100755 --- a/radio/src/gui/Taranis/helpers.cpp +++ b/radio/src/gui/Taranis/helpers.cpp @@ -167,12 +167,7 @@ bool isInputSourceAvailable(int source) if (source>=MIXSRC_FIRST_TELEM && source<=MIXSRC_LAST_TELEM) { div_t qr = div(source-MIXSRC_FIRST_TELEM, 3); - if (g_model.telemetrySensors[qr.quot].unit >= UNIT_DATETIME) - return false; - else if (qr.rem == 0) - return isTelemetryFieldAvailable(qr.quot); - else - return isTelemetryFieldComparisonAvailable(qr.quot); + return isTelemetryFieldAvailable(qr.quot) && isTelemetryFieldComparisonAvailable(qr.quot); } return false; diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index 981d623f2..9ad0d23a1 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -177,9 +177,7 @@ inline bool isTelemetryFieldComparisonAvailable(int index) TelemetrySensor & sensor = g_model.telemetrySensors[index]; if (sensor.type == TELEM_TYPE_CALCULATED) return true; - if (sensor.unit == UNIT_GPS) - return false; - if (sensor.unit == UNIT_DATETIME) + if (sensor.unit >= UNIT_DATETIME) return false; return (sensor.id != 0); } From a6e86089ec143bba2aabbe2094b855076491b7dc Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 24 Mar 2015 21:45:16 +0100 Subject: [PATCH 061/100] Telemetry totalizer started ... --- radio/src/gui/9X/menu_model_telemetry.cpp | 4 ++-- radio/src/gui/Taranis/menu_model_telemetry.cpp | 12 ++++++++++-- radio/src/myeeprom.h | 2 ++ radio/src/telemetry/telemetry.cpp | 13 ++++++++++++- radio/src/translations/en.h.txt | 2 +- 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index 6a3a9356b..d41c45fcd 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -248,7 +248,7 @@ bool isSensorAvailable(int sensor) #define SENSOR_UNIT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PREC_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PARAM1_ROWS (sensor->unit >= UNIT_FIRST_VIRTUAL ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && (sensor->formula==TELEM_FORMULA_CONSUMPTION || sensor->formula==TELEM_FORMULA_TOTALIZE)) ? HIDDEN_ROW : (uint8_t)0 #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_AUTOOFFSET_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) @@ -313,7 +313,7 @@ void menuModelSensor(uint8_t event) } } else { - sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, STR_VFORMULAS, sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); + sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, STR_VFORMULAS, sensor->formula, 0, TELEM_FORMULA_LAST, attr, event); if (attr && checkIncDec_Ret) { sensor->param = 0; if (sensor->formula == TELEM_FORMULA_CELL) { diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index b98e89b93..ce2c8194b 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -205,7 +205,7 @@ bool isSensorAvailable(int sensor) #define SENSOR_UNIT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PREC_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PARAM1_ROWS (sensor->unit >= UNIT_FIRST_VIRTUAL ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && (sensor->formula==TELEM_FORMULA_CONSUMPTION || sensor->formula==TELEM_FORMULA_TOTALIZE))) ? HIDDEN_ROW : (uint8_t)0 #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_AUTOOFFSET_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) @@ -270,7 +270,7 @@ void menuModelSensor(uint8_t event) } } else { - sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, STR_VFORMULAS, sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); + sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, STR_VFORMULAS, sensor->formula, 0, TELEM_FORMULA_LAST, attr, event); if (attr && checkIncDec_Ret) { sensor->param = 0; if (sensor->formula == TELEM_FORMULA_CELL) { @@ -334,6 +334,14 @@ void menuModelSensor(uint8_t event) } break; } + else if (sensor->formula == TELEM_FORMULA_TOTALIZE) { + lcd_putsLeft(y, NO_INDENT(STR_SOURCE)); + putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->consumption.source ? MIXSRC_FIRST_TELEM+3*(sensor->consumption.source-1) : 0, attr); + if (attr) { + sensor->consumption.source = checkIncDec(event, sensor->consumption.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isTelemetryFieldComparisonAvailable); + } + break; + } } else { if (sensor->unit == UNIT_RPMS) { diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index af4a513d7..2bc9ef6f9 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -1246,6 +1246,8 @@ enum TelemetrySensorFormula TELEM_FORMULA_CELL, TELEM_FORMULA_CONSUMPTION, TELEM_FORMULA_DIST, + TELEM_FORMULA_TOTALIZE, + TELEM_FORMULA_LAST = TELEM_FORMULA_TOTALIZE }; PACK(typedef struct { diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 154a25fd3..33561aed9 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -14,8 +14,10 @@ void TelemetryItem::gpsReceived() lastReceived = now(); } -void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uint32_t unit, uint32_t prec) +void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32_t unit, uint32_t prec) { + int32_t newVal = val; + if (unit == UNIT_CELLS) { uint32_t data = uint32_t(newVal); uint8_t cellIndex = data & 0xF; @@ -216,6 +218,15 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin } } + for (int i=0; i Date: Tue, 24 Mar 2015 16:52:21 -0400 Subject: [PATCH 062/100] Fix to allow Companion to compile on Windows using Cygwin (posix) --- companion/src/simulation/simulatorinterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/simulation/simulatorinterface.cpp b/companion/src/simulation/simulatorinterface.cpp index 4c767f900..181ffd78a 100644 --- a/companion/src/simulation/simulatorinterface.cpp +++ b/companion/src/simulation/simulatorinterface.cpp @@ -31,7 +31,7 @@ void registerSimulators() { QDir dir("."); QStringList filters; -#if !defined __GNUC__ +#if (!defined __GNUC__) || (defined __CYGWIN__) filters << "*-simulator.dll"; #else filters << "*-simulator.so"; From f7372000c533c23a03ae9e6419464f2c93ef41c6 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 25 Mar 2015 10:22:57 +0400 Subject: [PATCH 063/100] Totalizer needs unit --- radio/src/myeeprom.h | 4 ++-- radio/src/translations/cz.h.txt | 2 +- radio/src/translations/de.h.txt | 2 +- radio/src/translations/en.h.txt | 2 +- radio/src/translations/es.h.txt | 2 +- radio/src/translations/fi.h.txt | 2 +- radio/src/translations/fr.h.txt | 2 +- radio/src/translations/it.h.txt | 2 +- radio/src/translations/pl.h.txt | 2 +- radio/src/translations/pt.h.txt | 2 +- radio/src/translations/se.h.txt | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 2bc9ef6f9..862316b93 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -1243,11 +1243,11 @@ enum TelemetrySensorFormula TELEM_FORMULA_MIN, TELEM_FORMULA_MAX, TELEM_FORMULA_MULTIPLY, + TELEM_FORMULA_TOTALIZE, TELEM_FORMULA_CELL, TELEM_FORMULA_CONSUMPTION, TELEM_FORMULA_DIST, - TELEM_FORMULA_TOTALIZE, - TELEM_FORMULA_LAST = TELEM_FORMULA_TOTALIZE + TELEM_FORMULA_LAST = TELEM_FORMULA_DIST }; PACK(typedef struct { diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index bb255f023..47d907aff 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -535,7 +535,7 @@ #define TR_VSENSORTYPES "Custom\0 ""Calculated" #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance" #define LEN_VPREC "\005" #define TR_VPREC "PREC0""PREC1""PREC2" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 87e1f55bb..17a8687a8 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -534,7 +534,7 @@ #define TR_VSENSORTYPES "Custom\0 ""Calculated" #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance" #define LEN_VPREC "\005" #define TR_VPREC "PREC0""PREC1""PREC2" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 03a6ee321..879410158 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -534,7 +534,7 @@ #define TR_VSENSORTYPES "Custom\0 ""Calculated" #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance""Totalize" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance" #define LEN_VPREC "\005" #define TR_VPREC "PREC0""PREC1""PREC2" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 2e9e89c91..f82ae4a13 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -495,7 +495,7 @@ #define TR_VSENSORTYPES "Custom\0 ""Calculated" #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance" #define LEN_VPREC "\005" #define TR_VPREC "PREC0""PREC1""PREC2" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index b109c2fee..d05d6f383 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -495,7 +495,7 @@ #define TR_VSENSORTYPES "Custom\0 ""Calculated" #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance" #define LEN_VPREC "\005" #define TR_VPREC "PREC0""PREC1""PREC2" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 7cfcdf132..65e94dbea 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -538,7 +538,7 @@ #define TR_VSENSORTYPES "Perso\0 ""Calculé\0 " #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Addition""Moyenne\0""Min\0 ""Max\0 ""Multipl.""Elément\0""Consomm.""Distance" +#define TR_VFORMULAS "Addition""Moyenne\0""Min\0 ""Max\0 ""Multipl.""Totalise""Elément\0""Consomm.""Distance" #define LEN_VPREC "\005" #define TR_VPREC "PREC0""PREC1""PREC2" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 56a8b27d5..ad7dd93da 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -495,7 +495,7 @@ #define TR_VSENSORTYPES "Custom\0 ""Calculated" #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance" #define LEN_VPREC "\005" #define TR_VPREC "PREC0""PREC1""PREC2" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index f462963fa..a9a332e77 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -493,7 +493,7 @@ #define TR_VSENSORTYPES "Custom\0 ""Calculated" #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance" #define LEN_VPREC "\005" #define TR_VPREC "PREC0""PREC1""PREC2" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 01a2fd704..4bbabc8e0 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -495,7 +495,7 @@ #define TR_VSENSORTYPES "Custom\0 ""Calculated" #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance" #define LEN_VPREC "\005" #define TR_VPREC "PREC0""PREC1""PREC2" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 3b9d171fc..d0a76ed23 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -495,7 +495,7 @@ #define TR_VSENSORTYPES "Custom\0 ""Calculated" #define LEN_VFORMULAS "\010" -#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance" #define LEN_VPREC "\005" #define TR_VPREC "PREC0""PREC1""PREC2" From 47274050ed2c595d677c122479f03cedbd078607 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 25 Mar 2015 10:32:32 +0400 Subject: [PATCH 064/100] messed up )'s --- radio/src/gui/9X/menu_model_telemetry.cpp | 2 +- radio/src/gui/Taranis/menu_model_telemetry.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index d41c45fcd..4fb45ae15 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -248,7 +248,7 @@ bool isSensorAvailable(int sensor) #define SENSOR_UNIT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PREC_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PARAM1_ROWS (sensor->unit >= UNIT_FIRST_VIRTUAL ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && (sensor->formula==TELEM_FORMULA_CONSUMPTION || sensor->formula==TELEM_FORMULA_TOTALIZE)) ? HIDDEN_ROW : (uint8_t)0 +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && (sensor->formula==TELEM_FORMULA_CONSUMPTION || sensor->formula==TELEM_FORMULA_TOTALIZE)) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_AUTOOFFSET_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index ce2c8194b..39a4059ec 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -205,7 +205,7 @@ bool isSensorAvailable(int sensor) #define SENSOR_UNIT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PREC_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PARAM1_ROWS (sensor->unit >= UNIT_FIRST_VIRTUAL ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && (sensor->formula==TELEM_FORMULA_CONSUMPTION || sensor->formula==TELEM_FORMULA_TOTALIZE))) ? HIDDEN_ROW : (uint8_t)0 +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && (sensor->formula==TELEM_FORMULA_CONSUMPTION || sensor->formula==TELEM_FORMULA_TOTALIZE)) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_AUTOOFFSET_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) From e6b0a011652ba9724bfaefff7484da59f0cf92be Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 25 Mar 2015 11:49:25 +0400 Subject: [PATCH 065/100] Fluid units --- radio/src/myeeprom.h | 4 +++- radio/src/telemetry/frsky.cpp | 1 + radio/src/telemetry/frsky.h | 2 ++ radio/src/telemetry/frsky_sport.cpp | 1 + radio/src/telemetry/telemetry.cpp | 7 ++++++- radio/src/translations/cz.h.txt | 2 +- radio/src/translations/de.h.txt | 2 +- radio/src/translations/en.h.txt | 2 +- radio/src/translations/fr.h.txt | 2 +- radio/src/translations/pl.h.txt | 2 +- 10 files changed, 18 insertions(+), 7 deletions(-) diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 862316b93..e1028213f 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -1150,6 +1150,8 @@ enum TelemetryUnit { UNIT_RPMS, UNIT_G, UNIT_DEGREE, + UNIT_MILLILITERS, + UNIT_FLOZ, UNIT_HOURS, UNIT_MINUTES, UNIT_SECONDS, @@ -1167,7 +1169,7 @@ enum TelemetryUnit { UNIT_DATETIME_HOUR_MIN, UNIT_DATETIME_SEC }; -#define UNIT_MAX UNIT_DEGREE +#define UNIT_MAX UNIT_FLOZ #define UNIT_DIST UNIT_METERS #define UNIT_TEMPERATURE UNIT_CELSIUS #define UNIT_SPEED UNIT_KMH diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 757eb92b9..067fc2408 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -579,6 +579,7 @@ void telemetryReset() setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CELLS_FIRST_ID, 2, 0x80280220, UNIT_CELLS, 0); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CURR_FIRST_ID, 3, 100, UNIT_AMPS, 2); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, RPM_FIRST_ID, 5, 3600, UNIT_RPMS, 0); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, FUEL_QTY_FIRST_ID, 11, 1000, UNIT_MILLILITERS, 2); #endif } diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 19f4da929..dcfb7442d 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -140,6 +140,8 @@ #define BATT_ID 0xf104 #define SWR_ID 0xf105 #define XJT_VERSION_ID 0xf106 +#define FUEL_QTY_FIRST_ID 0x0a10 +#define FUEL_QTY_LAST_ID 0x0a1f // Default sensor data IDs (Physical IDs + CRC) #define DATA_ID_VARIO 0x00 // 0 diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 7dd5e7033..848701106 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -80,6 +80,7 @@ const FrSkySportSensor sportSensors[] = { { GPS_ALT_FIRST_ID, GPS_ALT_LAST_ID, ZSTR_GPSALT, UNIT_METERS, 2 }, { GPS_TIME_DATE_FIRST_ID, GPS_TIME_DATE_LAST_ID, ZSTR_GPSDATETIME, UNIT_DATETIME, 0 }, { GPS_LONG_LATI_FIRST_ID, GPS_LONG_LATI_LAST_ID, ZSTR_GPS, UNIT_GPS, 0 }, + { FUEL_QTY_FIRST_ID, FUEL_QTY_LAST_ID, ZSTR_FUEL, UNIT_MILLILITERS, 2 }, { 0, 0, NULL, UNIT_RAW, 0 } // sentinel }; diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 33561aed9..9b4933333 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -565,7 +565,12 @@ int32_t convertTelemetryValue(int32_t value, uint8_t unit, uint8_t prec, uint8_t value = 32 + (value*18)/10; } } - + else if (unit == UNIT_MILLILITERS) { + if (destUnit == UNIT_FLOZ) { + value = (value * 100) / 2957; + } + } + for (int i=destPrec; i Date: Wed, 25 Mar 2015 11:58:24 +0400 Subject: [PATCH 066/100] Missing units in companion --- companion/src/modeledit/telemetry_sensor.ui | 40 +++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/companion/src/modeledit/telemetry_sensor.ui b/companion/src/modeledit/telemetry_sensor.ui index 182159ebb..ce8fafaca 100644 --- a/companion/src/modeledit/telemetry_sensor.ui +++ b/companion/src/modeledit/telemetry_sensor.ui @@ -419,6 +419,46 @@ Percentage (%) + + + Energy (mAh) + + + + + Power (W) + + + + + RF Power (dBm) + + + + + RPM + + + + + Acceleration (g) + + + + + Heading (°) + + + + + Volume (mL) + + + + + Volume (US fl.Oz.) + +
From 0bea656cd2afd0dcd962c65d03163ed89807e65f Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 25 Mar 2015 14:05:02 +0400 Subject: [PATCH 067/100] Don't show ID for calculated sensors --- radio/src/gui/Taranis/menu_model_telemetry.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 39a4059ec..1972e80ff 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -509,7 +509,9 @@ void menuModelTelemetry(uint8_t event) lcd_putsAtt(TELEM_COL2, y, "---", 0); // TODO shortcut } TelemetrySensor * sensor = & g_model.telemetrySensors[index]; - lcd_outdezAtt(TELEM_COL3+1*FW, y, sensor->instance, LEFT); + if (sensor->type == TELEM_TYPE_CUSTOM) { + lcd_outdezAtt(TELEM_COL3+1*FW, y, sensor->instance, LEFT); + } if (attr) { s_editMode = 0; s_currIdx = index; From 438090536bb76d6a92e42ad33600aa6d644aaedc Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 25 Mar 2015 21:03:03 +0400 Subject: [PATCH 068/100] TTS for new units --- radio/src/translations/tts_cz.cpp | 2 ++ radio/src/translations/tts_de.cpp | 4 +++- radio/src/translations/tts_en.cpp | 2 ++ radio/src/translations/tts_es.cpp | 4 +++- radio/src/translations/tts_fr.cpp | 4 ++++ radio/src/translations/tts_hu.cpp | 2 ++ radio/src/translations/tts_it.cpp | 2 ++ radio/src/translations/tts_pl.cpp | 2 ++ radio/src/translations/tts_pt.cpp | 2 ++ radio/src/translations/tts_se.cpp | 2 ++ radio/src/translations/tts_sk.cpp | 2 ++ radio/util/tts.py | 14 ++++++++------ 12 files changed, 34 insertions(+), 8 deletions(-) diff --git a/radio/src/translations/tts_cz.cpp b/radio/src/translations/tts_cz.cpp index 4f45c212c..0d8dc068f 100644 --- a/radio/src/translations/tts_cz.cpp +++ b/radio/src/translations/tts_cz.cpp @@ -56,6 +56,8 @@ enum CzechPrompts { CZ_PROMPT_SECONDS = CZ_PROMPT_UNITS_BASE+(UNIT_SECONDS*4), CZ_PROMPT_RPMS = CZ_PROMPT_UNITS_BASE+(UNIT_RPMS*4), CZ_PROMPT_G = CZ_PROMPT_UNITS_BASE+(UNIT_G*4), + CZ_PROMPT_MILLILITERS = CZ_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*4), + CZ_PROMPT_FLOZ = CZ_PROMPT_UNITS_BASE+(UNIT_FLOZ*4), }; diff --git a/radio/src/translations/tts_de.cpp b/radio/src/translations/tts_de.cpp index 4fcc5567b..a15f12f6f 100644 --- a/radio/src/translations/tts_de.cpp +++ b/radio/src/translations/tts_de.cpp @@ -56,7 +56,9 @@ enum GermanPrompts { DE_PROMPT_MINUTES = DE_PROMPT_UNITS_BASE+UNIT_MINUTES, DE_PROMPT_SECONDS = DE_PROMPT_UNITS_BASE+UNIT_SECONDS, DE_PROMPT_RPMS = DE_PROMPT_UNITS_BASE+UNIT_RPMS, - DE_PROMPT_G= DE_PROMPT_UNITS_BASE+UNIT_G, + DE_PROMPT_G = DE_PROMPT_UNITS_BASE+UNIT_G, + DE_PROMPT_MILLILITERS = DE_PROMPT_UNITS_BASE+UNIT_MILLILITERS, + DE_PROMPT_FLOZ = DE_PROMPT_UNITS_BASE+UNIT_FLOZ, }; diff --git a/radio/src/translations/tts_en.cpp b/radio/src/translations/tts_en.cpp index c72ed749a..0287f4299 100644 --- a/radio/src/translations/tts_en.cpp +++ b/radio/src/translations/tts_en.cpp @@ -65,6 +65,8 @@ enum EnglishPrompts { EN_PROMPT_SECONDS = EN_PROMPT_UNITS_BASE+(UNIT_SECONDS*2), EN_PROMPT_RPMS = EN_PROMPT_UNITS_BASE+(UNIT_RPMS*2), EN_PROMPT_G = EN_PROMPT_UNITS_BASE+(UNIT_G*2), + EN_PROMPT_MILLILITERS = EN_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*2), + EN_PROMPT_FLOZ = EN_PROMPT_UNITS_BASE+(UNIT_FLOZ*2), EN_PROMPT_POINT_BASE = 160, //.0 - .9 diff --git a/radio/src/translations/tts_es.cpp b/radio/src/translations/tts_es.cpp index 4aed68a5c..f86a98a0f 100644 --- a/radio/src/translations/tts_es.cpp +++ b/radio/src/translations/tts_es.cpp @@ -80,7 +80,9 @@ enum SpanishPrompts { ES_PROMPT_MINUTES = ES_PROMPT_UNITS_BASE+UNIT_MINUTES, ES_PROMPT_SECONDS = ES_PROMPT_UNITS_BASE+UNIT_SECONDS, ES_PROMPT_RPMS = ES_PROMPT_UNITS_BASE+UNIT_RPMS, - ES_PROMPT_G= ES_PROMPT_UNITS_BASE+UNIT_G, + ES_PROMPT_G = ES_PROMPT_UNITS_BASE+UNIT_G, + ES_PROMPT_MILLILITERS = ES_PROMPT_UNITS_BASE+UNIT_MILLILITERS, + ES_PROMPT_FLOZ = ES_PROMPT_UNITS_BASE+UNIT_FLOZ, }; diff --git a/radio/src/translations/tts_fr.cpp b/radio/src/translations/tts_fr.cpp index 402fd3d39..a88fa3297 100644 --- a/radio/src/translations/tts_fr.cpp +++ b/radio/src/translations/tts_fr.cpp @@ -62,6 +62,10 @@ enum FrenchPrompts { FR_PROMPT_HEURE = FR_PROMPT_UNITS_BASE+UNIT_HOURS, FR_PROMPT_MINUTE = FR_PROMPT_UNITS_BASE+UNIT_MINUTES, FR_PROMPT_SECONDE = FR_PROMPT_UNITS_BASE+UNIT_SECONDS, + FR_PROMPT_RPMS = FR_PROMPT_UNITS_BASE+UNIT_RPMS, + FR_PROMPT_G = FR_PROMPT_UNITS_BASE+UNIT_G, + FR_PROMPT_MILLILITERS = FR_PROMPT_UNITS_BASE+UNIT_MILLILITERS, + FR_PROMPT_FLOZ = FR_PROMPT_UNITS_BASE+UNIT_FLOZ, FR_PROMPT_VIRGULE_BASE = 180, //,0 - ,9 }; diff --git a/radio/src/translations/tts_hu.cpp b/radio/src/translations/tts_hu.cpp index 1c1763232..7d370dc87 100644 --- a/radio/src/translations/tts_hu.cpp +++ b/radio/src/translations/tts_hu.cpp @@ -65,6 +65,8 @@ enum HungarianPrompts { HU_PROMPT_SECONDS = HU_PROMPT_UNITS_BASE+(UNIT_SECONDS*2), HU_PROMPT_RPMS = HU_PROMPT_UNITS_BASE+(UNIT_RPMS*2), HU_PROMPT_G = HU_PROMPT_UNITS_BASE+(UNIT_G*2), + HU_PROMPT_MILLILITERS = HU_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*2), + HU_PROMPT_FLOZ = HU_PROMPT_UNITS_BASE+(UNIT_FLOZ*2), HU_PROMPT_POINT_BASE = 160, //.0 - .9 diff --git a/radio/src/translations/tts_it.cpp b/radio/src/translations/tts_it.cpp index 4e5dc6f5a..ad88fe816 100644 --- a/radio/src/translations/tts_it.cpp +++ b/radio/src/translations/tts_it.cpp @@ -53,6 +53,8 @@ enum ItalianPrompts { IT_PROMPT_WATTS = IT_PROMPT_UNITS_BASE+UNIT_WATTS, IT_PROMPT_FEET = IT_PROMPT_UNITS_BASE+UNIT_FEET, IT_PROMPT_KTS = IT_PROMPT_UNITS_BASE+UNIT_KTS, + IT_PROMPT_MILLILITERS = IT_PROMPT_UNITS_BASE+UNIT_MILLILITERS, + IT_PROMPT_FLOZ = IT_PROMPT_UNITS_BASE+UNIT_FLOZ, }; diff --git a/radio/src/translations/tts_pl.cpp b/radio/src/translations/tts_pl.cpp index faac6283b..9d0694ce3 100644 --- a/radio/src/translations/tts_pl.cpp +++ b/radio/src/translations/tts_pl.cpp @@ -58,6 +58,8 @@ enum PolishPrompts { PL_PROMPT_SECONDS = PL_PROMPT_UNITS_BASE+(UNIT_SECONDS*4), PL_PROMPT_RPMS = PL_PROMPT_UNITS_BASE+(UNIT_RPMS*4), PL_PROMPT_G = PL_PROMPT_UNITS_BASE+(UNIT_G*4), + PL_PROMPT_MILLILITERS = PL_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*4), + PL_PROMPT_FLOZ = PL_PROMPT_UNITS_BASE+(UNIT_FLOZ*4), }; #if defined(VOICE) diff --git a/radio/src/translations/tts_pt.cpp b/radio/src/translations/tts_pt.cpp index 024b20095..7b3ab5dcd 100644 --- a/radio/src/translations/tts_pt.cpp +++ b/radio/src/translations/tts_pt.cpp @@ -76,6 +76,8 @@ enum PortuguesePrompts { PT_PROMPT_WATTS = PT_PROMPT_UNITS_BASE+UNIT_WATTS, PT_PROMPT_FEET = PT_PROMPT_UNITS_BASE+UNIT_FEET, PT_PROMPT_KTS = PT_PROMPT_UNITS_BASE+UNIT_KTS, + PT_PROMPT_MILLILITERS = PT_PROMPT_UNITS_BASE+UNIT_MILLILITERS, + PT_PROMPT_FLOZ = PT_PROMPT_UNITS_BASE+UNIT_FLOZ, }; #if defined(VOICE) diff --git a/radio/src/translations/tts_se.cpp b/radio/src/translations/tts_se.cpp index b187338a5..e464e729d 100644 --- a/radio/src/translations/tts_se.cpp +++ b/radio/src/translations/tts_se.cpp @@ -66,6 +66,8 @@ enum SwedishPrompts { SE_PROMPT_SECONDS = SE_PROMPT_UNITS_BASE+(UNIT_SECONDS*2), SE_PROMPT_RPMS = SE_PROMPT_UNITS_BASE+(UNIT_RPMS*2), SE_PROMPT_G = SE_PROMPT_UNITS_BASE+(UNIT_G*2), + SE_PROMPT_MILLILITERS = SE_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*2), + SE_PROMPT_FLOZ = SE_PROMPT_UNITS_BASE+(UNIT_FLOZ*2), SE_PROMPT_POINT_BASE = 160, //.0 - .9 diff --git a/radio/src/translations/tts_sk.cpp b/radio/src/translations/tts_sk.cpp index fdea697cc..14ee57485 100644 --- a/radio/src/translations/tts_sk.cpp +++ b/radio/src/translations/tts_sk.cpp @@ -71,6 +71,8 @@ enum SlovakPrompts { SK_PROMPT_SECONDS = SK_PROMPT_UNITS_BASE+(UNIT_SECONDS*4), SK_PROMPT_RPMS = SK_PROMPT_UNITS_BASE+(UNIT_RPMS*4), SK_PROMPT_G = SK_PROMPT_UNITS_BASE+(UNIT_G*4), + SK_PROMPT_MILLILITERS = SK_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*4), + SK_PROMPT_FLOZ = SK_PROMPT_UNITS_BASE+(UNIT_FLOZ*4), }; diff --git a/radio/util/tts.py b/radio/util/tts.py index 4e9ed32fa..79cfd0909 100644 --- a/radio/util/tts.py +++ b/radio/util/tts.py @@ -151,7 +151,9 @@ def ttsEn(): "minute", "minutes", "second", "seconds", "r p m", "r p m", - "g", "g"]): + "g", "g" + "milliliter", "milliliters" + "fluid ounce", "fluid ounces"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+115+i))) for i, s in enumerate(["point zero", "point one", "point two", "point three", "point four", "point five", "point six", @@ -246,7 +248,7 @@ def ttsFr(): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+110+i))) for i, s in enumerate(["virgule", "et", "moins", "minuit", "midi"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+119+i))) - for i, s in enumerate(["volts", u"ampères", u"mètres seconde", "", u"kilomètre heure", u"mètres", u"degrés", "pourcents", u"milli ampères", u"milli ampères / heure", "watt", "db", "pieds", "miles par heure", "heure", "minute", "seconde", "tours minute", "g"]): + for i, s in enumerate(["volts", u"ampères", u"mètres seconde", "", u"kilomètre heure", u"mètres", u"degrés", "pourcents", u"milli ampères", u"milli ampères / heure", "watt", "db", "pieds", "miles par heure", "heure", "minute", "seconde", "tours minute", "g", "millilitres", "onces"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+125+i))) for i, s in enumerate(["timer", "", "tension", "tension", u"émission", u"réception", "altitude", "moteur", "essence", u"température", u"température", "vitesse", "distance", "altitude", u"élément lipo", @@ -306,7 +308,7 @@ def ttsIt(): systemSounds.append(("mille", filename(PROMPT_SYSTEM_BASE+102))) for i, s in enumerate(["virgola", "un", "e", "meno", "ora", "ore", "minuto", "minuti", "secondo", "secondi"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+103+i))) - for i, s in enumerate(["volt", "ampere", "metri per secondo", "", "chilometri/ora", "metri", "gradi", "percento", "milliampere", "milliampere/ora", "watt", "db", "piedi", "nodi", "ore", "minuti", "secondi", "R P M", "g"]): + for i, s in enumerate(["volt", "ampere", "metri per secondo", "", "chilometri/ora", "metri", "gradi", "percento", "milliampere", "milliampere/ora", "watt", "db", "piedi", "nodi", "ore", "minuti", "secondi", "R P M", "g", "millilitri", "once"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+113+i))) for s, f, a in [(u"radio inattiva controllare", "inactiv", 486), (u"batteria della radio scarica", "lowbatt", 485), @@ -388,7 +390,7 @@ def ttsPt(): systemSounds.append(("mil", filename(PROMPT_SYSTEM_BASE+110))) for i, s in enumerate(["virgula", "uma", "duas", "e", "menos", "hora", "horas", "minuto", "minutos", "segundo", "segundos"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+111+i))) - for i, s in enumerate([u"Volt", u"ampére", u"metros por segundo", u"", u"quilômetros por hora", u"metros", u"graus", u"cento", u"miliamperes", u"miliamperes por hora", u"watt", u"db", u"pés", u"nós", u"horas", u"minutos", u"segundos", u"RPM", u"g"]): + for i, s in enumerate([u"Volt", u"ampére", u"metros por segundo", u"", u"quilômetros por hora", u"metros", u"graus", u"cento", u"miliamperes", u"miliamperes por hora", u"watt", u"db", u"pés", u"nós", u"horas", u"minutos", u"segundos", u"RPM", u"g", u"mililitri", u"onças"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+122+i))) for s, f, a in [(u"atenção, o rádio foi esquecido ligado, por favor desligue-o", "inactiv", 486), (u"bateria do rádio fraca", "lowbatt", 485), @@ -468,7 +470,7 @@ def ttsEs(): systemSounds.append(("mil", filename(PROMPT_SYSTEM_BASE+110))) for i, s in enumerate(["coma", "un", "una", "y", "meno", "hora", "horas", "minuto", "minutos", "segundo", "segundos"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+111+i))) - for i, s in enumerate([u"Voltio", u"ampério", u"metros por segundo", u"", u"kilómetro por hora", u"metros", u"grados", u"por ciento", u"miliamperios", u"miliamperios por hora", u"vatio", u"db", u"pés", u"nós", u"horas", u"minutos", u"segundos", u"RPM", u"g"]): + for i, s in enumerate([u"Voltio", u"ampério", u"metros por segundo", u"", u"kilómetro por hora", u"metros", u"grados", u"por ciento", u"miliamperios", u"miliamperios por hora", u"vatio", u"db", u"pés", u"nós", u"horas", u"minutos", u"segundos", u"RPM", u"g", u"mililitro", u"onzas"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+122+i))) for s, f, a in [(u"me tienes abandonada", "inactiv", 486), (u"batería del transmisor baja", "lowbatt", 485), @@ -541,7 +543,7 @@ def ttsDe(): systemSounds.append(("tausend", filename(PROMPT_SYSTEM_BASE+101))) for i, s in enumerate(["comma", "und", "minus", "uhr", "minute", "minuten", "sekunde", "sekunden"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+102+i))) - for i, s in enumerate(["Volt", "Ampere", "Meter pro sekunde", "", "kilometer pro stunde", "Meter", "Grad", "Prozent", "Milliampere", "Milliampere pro stunde", "Watt", "db", "Fuesse", "Knoten", "Uhr", "Minuten", "Secunden", "R P M", "g"]): + for i, s in enumerate(["Volt", "Ampere", "Meter pro sekunde", "", "kilometer pro stunde", "Meter", "Grad", "Prozent", "Milliampere", "Milliampere pro stunde", "Watt", "db", "Fuesse", "Knoten", "Uhr", "Minuten", "Secunden", "R P M", "g", "Milliliter", "Unze"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+110+i))) for s, f, a in [(u"Sender ist inaktiv,bitte Ueberpruefen Sie", "inactiv", 486), (u"Senderakku niedrig", "lowbatt", 485), From 7507f1a85736bd3e312296158e7fb174c5d86a41 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 25 Mar 2015 21:09:05 +0400 Subject: [PATCH 069/100] ...but only for ARM --- radio/src/translations/tts_cz.cpp | 2 ++ radio/src/translations/tts_de.cpp | 2 ++ radio/src/translations/tts_en.cpp | 2 ++ radio/src/translations/tts_es.cpp | 2 ++ radio/src/translations/tts_fr.cpp | 2 ++ radio/src/translations/tts_hu.cpp | 2 ++ radio/src/translations/tts_it.cpp | 2 ++ radio/src/translations/tts_pl.cpp | 2 ++ radio/src/translations/tts_pt.cpp | 2 ++ radio/src/translations/tts_se.cpp | 2 ++ radio/src/translations/tts_sk.cpp | 2 ++ 11 files changed, 22 insertions(+) diff --git a/radio/src/translations/tts_cz.cpp b/radio/src/translations/tts_cz.cpp index 0d8dc068f..f46c10d68 100644 --- a/radio/src/translations/tts_cz.cpp +++ b/radio/src/translations/tts_cz.cpp @@ -56,8 +56,10 @@ enum CzechPrompts { CZ_PROMPT_SECONDS = CZ_PROMPT_UNITS_BASE+(UNIT_SECONDS*4), CZ_PROMPT_RPMS = CZ_PROMPT_UNITS_BASE+(UNIT_RPMS*4), CZ_PROMPT_G = CZ_PROMPT_UNITS_BASE+(UNIT_G*4), +#if defined(CPUARM) CZ_PROMPT_MILLILITERS = CZ_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*4), CZ_PROMPT_FLOZ = CZ_PROMPT_UNITS_BASE+(UNIT_FLOZ*4), +#endif }; diff --git a/radio/src/translations/tts_de.cpp b/radio/src/translations/tts_de.cpp index a15f12f6f..c655fd261 100644 --- a/radio/src/translations/tts_de.cpp +++ b/radio/src/translations/tts_de.cpp @@ -57,8 +57,10 @@ enum GermanPrompts { DE_PROMPT_SECONDS = DE_PROMPT_UNITS_BASE+UNIT_SECONDS, DE_PROMPT_RPMS = DE_PROMPT_UNITS_BASE+UNIT_RPMS, DE_PROMPT_G = DE_PROMPT_UNITS_BASE+UNIT_G, +#if defined(CPUARM) DE_PROMPT_MILLILITERS = DE_PROMPT_UNITS_BASE+UNIT_MILLILITERS, DE_PROMPT_FLOZ = DE_PROMPT_UNITS_BASE+UNIT_FLOZ, +#endif }; diff --git a/radio/src/translations/tts_en.cpp b/radio/src/translations/tts_en.cpp index 0287f4299..4b5e93908 100644 --- a/radio/src/translations/tts_en.cpp +++ b/radio/src/translations/tts_en.cpp @@ -65,8 +65,10 @@ enum EnglishPrompts { EN_PROMPT_SECONDS = EN_PROMPT_UNITS_BASE+(UNIT_SECONDS*2), EN_PROMPT_RPMS = EN_PROMPT_UNITS_BASE+(UNIT_RPMS*2), EN_PROMPT_G = EN_PROMPT_UNITS_BASE+(UNIT_G*2), +#if defined(CPUARM) EN_PROMPT_MILLILITERS = EN_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*2), EN_PROMPT_FLOZ = EN_PROMPT_UNITS_BASE+(UNIT_FLOZ*2), +#endif EN_PROMPT_POINT_BASE = 160, //.0 - .9 diff --git a/radio/src/translations/tts_es.cpp b/radio/src/translations/tts_es.cpp index f86a98a0f..b6f74ec88 100644 --- a/radio/src/translations/tts_es.cpp +++ b/radio/src/translations/tts_es.cpp @@ -81,8 +81,10 @@ enum SpanishPrompts { ES_PROMPT_SECONDS = ES_PROMPT_UNITS_BASE+UNIT_SECONDS, ES_PROMPT_RPMS = ES_PROMPT_UNITS_BASE+UNIT_RPMS, ES_PROMPT_G = ES_PROMPT_UNITS_BASE+UNIT_G, +#if defined(CPUARM) ES_PROMPT_MILLILITERS = ES_PROMPT_UNITS_BASE+UNIT_MILLILITERS, ES_PROMPT_FLOZ = ES_PROMPT_UNITS_BASE+UNIT_FLOZ, +#endif }; diff --git a/radio/src/translations/tts_fr.cpp b/radio/src/translations/tts_fr.cpp index a88fa3297..82ebcc98c 100644 --- a/radio/src/translations/tts_fr.cpp +++ b/radio/src/translations/tts_fr.cpp @@ -64,8 +64,10 @@ enum FrenchPrompts { FR_PROMPT_SECONDE = FR_PROMPT_UNITS_BASE+UNIT_SECONDS, FR_PROMPT_RPMS = FR_PROMPT_UNITS_BASE+UNIT_RPMS, FR_PROMPT_G = FR_PROMPT_UNITS_BASE+UNIT_G, +#if defined(CPUARM) FR_PROMPT_MILLILITERS = FR_PROMPT_UNITS_BASE+UNIT_MILLILITERS, FR_PROMPT_FLOZ = FR_PROMPT_UNITS_BASE+UNIT_FLOZ, +#endif FR_PROMPT_VIRGULE_BASE = 180, //,0 - ,9 }; diff --git a/radio/src/translations/tts_hu.cpp b/radio/src/translations/tts_hu.cpp index 7d370dc87..3d1a28a63 100644 --- a/radio/src/translations/tts_hu.cpp +++ b/radio/src/translations/tts_hu.cpp @@ -65,8 +65,10 @@ enum HungarianPrompts { HU_PROMPT_SECONDS = HU_PROMPT_UNITS_BASE+(UNIT_SECONDS*2), HU_PROMPT_RPMS = HU_PROMPT_UNITS_BASE+(UNIT_RPMS*2), HU_PROMPT_G = HU_PROMPT_UNITS_BASE+(UNIT_G*2), +#if defined(CPUARM) HU_PROMPT_MILLILITERS = HU_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*2), HU_PROMPT_FLOZ = HU_PROMPT_UNITS_BASE+(UNIT_FLOZ*2), +#endif HU_PROMPT_POINT_BASE = 160, //.0 - .9 diff --git a/radio/src/translations/tts_it.cpp b/radio/src/translations/tts_it.cpp index ad88fe816..e178ef73f 100644 --- a/radio/src/translations/tts_it.cpp +++ b/radio/src/translations/tts_it.cpp @@ -53,8 +53,10 @@ enum ItalianPrompts { IT_PROMPT_WATTS = IT_PROMPT_UNITS_BASE+UNIT_WATTS, IT_PROMPT_FEET = IT_PROMPT_UNITS_BASE+UNIT_FEET, IT_PROMPT_KTS = IT_PROMPT_UNITS_BASE+UNIT_KTS, +#if defined(CPUARM) IT_PROMPT_MILLILITERS = IT_PROMPT_UNITS_BASE+UNIT_MILLILITERS, IT_PROMPT_FLOZ = IT_PROMPT_UNITS_BASE+UNIT_FLOZ, +#endif }; diff --git a/radio/src/translations/tts_pl.cpp b/radio/src/translations/tts_pl.cpp index 9d0694ce3..85a0d909b 100644 --- a/radio/src/translations/tts_pl.cpp +++ b/radio/src/translations/tts_pl.cpp @@ -58,8 +58,10 @@ enum PolishPrompts { PL_PROMPT_SECONDS = PL_PROMPT_UNITS_BASE+(UNIT_SECONDS*4), PL_PROMPT_RPMS = PL_PROMPT_UNITS_BASE+(UNIT_RPMS*4), PL_PROMPT_G = PL_PROMPT_UNITS_BASE+(UNIT_G*4), +#if defined(CPUARM) PL_PROMPT_MILLILITERS = PL_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*4), PL_PROMPT_FLOZ = PL_PROMPT_UNITS_BASE+(UNIT_FLOZ*4), +#endif }; #if defined(VOICE) diff --git a/radio/src/translations/tts_pt.cpp b/radio/src/translations/tts_pt.cpp index 7b3ab5dcd..38bcef083 100644 --- a/radio/src/translations/tts_pt.cpp +++ b/radio/src/translations/tts_pt.cpp @@ -76,8 +76,10 @@ enum PortuguesePrompts { PT_PROMPT_WATTS = PT_PROMPT_UNITS_BASE+UNIT_WATTS, PT_PROMPT_FEET = PT_PROMPT_UNITS_BASE+UNIT_FEET, PT_PROMPT_KTS = PT_PROMPT_UNITS_BASE+UNIT_KTS, +#if defined(CPUARM) PT_PROMPT_MILLILITERS = PT_PROMPT_UNITS_BASE+UNIT_MILLILITERS, PT_PROMPT_FLOZ = PT_PROMPT_UNITS_BASE+UNIT_FLOZ, +#endif }; #if defined(VOICE) diff --git a/radio/src/translations/tts_se.cpp b/radio/src/translations/tts_se.cpp index e464e729d..a2021ec51 100644 --- a/radio/src/translations/tts_se.cpp +++ b/radio/src/translations/tts_se.cpp @@ -66,8 +66,10 @@ enum SwedishPrompts { SE_PROMPT_SECONDS = SE_PROMPT_UNITS_BASE+(UNIT_SECONDS*2), SE_PROMPT_RPMS = SE_PROMPT_UNITS_BASE+(UNIT_RPMS*2), SE_PROMPT_G = SE_PROMPT_UNITS_BASE+(UNIT_G*2), +#if defined(CPUARM) SE_PROMPT_MILLILITERS = SE_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*2), SE_PROMPT_FLOZ = SE_PROMPT_UNITS_BASE+(UNIT_FLOZ*2), +#endif SE_PROMPT_POINT_BASE = 160, //.0 - .9 diff --git a/radio/src/translations/tts_sk.cpp b/radio/src/translations/tts_sk.cpp index 14ee57485..b132ca73a 100644 --- a/radio/src/translations/tts_sk.cpp +++ b/radio/src/translations/tts_sk.cpp @@ -71,8 +71,10 @@ enum SlovakPrompts { SK_PROMPT_SECONDS = SK_PROMPT_UNITS_BASE+(UNIT_SECONDS*4), SK_PROMPT_RPMS = SK_PROMPT_UNITS_BASE+(UNIT_RPMS*4), SK_PROMPT_G = SK_PROMPT_UNITS_BASE+(UNIT_G*4), +#if defined(CPUARM) SK_PROMPT_MILLILITERS = SK_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*4), SK_PROMPT_FLOZ = SK_PROMPT_UNITS_BASE+(UNIT_FLOZ*4), +#endif }; From ba640771820e529d01cb7af11d489eef63b31733 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Thu, 26 Mar 2015 11:25:56 +0400 Subject: [PATCH 070/100] Restore splash during EEPROM load for Taranis --- radio/src/opentx.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 26bbee271..02152c56b 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -2528,6 +2528,10 @@ int main(void) lcdSetRefVolt(25); #endif +#if defined(PCBTARANIS) + displaySplash(); +#endif + sei(); // interrupts needed for telemetryInit and eeReadAll. #if defined(FRSKY) && !defined(DSM2_SERIAL) From a9e42b30e9152c77ad950bcea44a23a712fdfd68 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Thu, 26 Mar 2015 12:09:55 +0400 Subject: [PATCH 071/100] About bitmap had been lost --- radio/src/gui/Taranis/view_about.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/radio/src/gui/Taranis/view_about.cpp b/radio/src/gui/Taranis/view_about.cpp index 9e544b184..05c92a86a 100755 --- a/radio/src/gui/Taranis/view_about.cpp +++ b/radio/src/gui/Taranis/view_about.cpp @@ -36,6 +36,10 @@ #include "../../opentx.h" +const pm_uchar about_bmp[] PROGMEM = { +#include "../../bitmaps/Taranis/about.lbm" +}; + enum AboutScreens { ABOUT_OPENTX, ABOUT_BERTRAND, @@ -78,6 +82,10 @@ void menuAboutView(uint8_t event) break; } + lcd_bmp(0, 0, about_bmp); + lcd_putsAtt(64, 0, STR_ABOUTUS, DBLSIZE); + lcd_hline(ABOUT_X, 18, 120); + lcd_hline(ABOUT_X, 19, 130, GREY_DEFAULT); LcdFlags att = GREY(max(0, 15-greyIndex/2)); uint8_t screenDuration = 150; From 9593021ee160233379720b61791ef29d987fe846 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 27 Mar 2015 11:34:02 +0400 Subject: [PATCH 072/100] Switch availability fixes --- radio/src/gui/Taranis/helpers.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/radio/src/gui/Taranis/helpers.cpp b/radio/src/gui/Taranis/helpers.cpp index 7174326b3..06b9b8f15 100755 --- a/radio/src/gui/Taranis/helpers.cpp +++ b/radio/src/gui/Taranis/helpers.cpp @@ -195,18 +195,12 @@ bool isSwitchAvailable(int swtch, SwitchContext context) swtch = -swtch; } -#if defined(REV9E) - if (swtch >= SWSRC_SA0 && swtch <= SWSRC_SR2) { + if (swtch >= SWSRC_SA0 && swtch <= SWSRC_LAST_SWITCH) { if (!SWITCH_EXISTS(index)) return false; if ((swtch-SWSRC_SA1)%3 == 0) return IS_3POS(index); } -#else - if (swtch == SWSRC_SA1 || swtch == SWSRC_SB1 || swtch == SWSRC_SC1 || swtch == SWSRC_SD1 || swtch == SWSRC_SE1 || swtch == SWSRC_SG1) { - return IS_3POS(index); - } -#endif if (swtch >= SWSRC_FIRST_MULTIPOS_SWITCH && swtch <= SWSRC_LAST_MULTIPOS_SWITCH) { int index = (swtch - SWSRC_FIRST_MULTIPOS_SWITCH) / XPOTS_MULTIPOS_COUNT; From 41d4bad0cc6aca967d8b74c6938e5c225469c905 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 27 Mar 2015 11:53:02 +0400 Subject: [PATCH 073/100] Switch mode translations --- radio/src/translations/es.h.txt | 3 +++ radio/src/translations/fi.h.txt | 3 +++ radio/src/translations/fr.h.txt | 6 +----- radio/src/translations/it.h.txt | 3 +++ radio/src/translations/pl.h.txt | 3 +++ radio/src/translations/pt.h.txt | 3 +++ radio/src/translations/se.h.txt | 3 +++ 7 files changed, 19 insertions(+), 5 deletions(-) diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index f82ae4a13..596b6af3f 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -82,6 +82,9 @@ #define LEN_UART3MODES "\015" #define TR_UART3MODES "OFF\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""Debug\0" +#define LEN_SWTYPES "\006" +#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0" + #define LEN_POTTYPES "\017" #define TR_POTTYPES "None\0 ""Pot with detent""Multipos Switch""Pot\0" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index d05d6f383..f5d38b5d2 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -82,6 +82,9 @@ #define LEN_UART3MODES "\015" #define TR_UART3MODES "POIS\0 ""S-Port Pelik\0""Telemetry\0 ""SBUS Trainer\0""Debug\0" +#define LEN_SWTYPES "\006" +#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0" + #define LEN_POTTYPES "\017" #define TR_POTTYPES "None\0 ""Pot with detent""Monias. Kytkin\0""Potikka\0" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 9e37977dd..36775f0db 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -83,11 +83,7 @@ #define TR_UART3MODES "OFF\0 ""Recopie S-Port""Télémétrie\0 ""Ecolage SBUS\0 ""Debug\0" #define LEN_SWTYPES "\006" -#if defined(REV9E) - #define TR_SWTYPES "Rien\0 ""Défaut""Levier""2-POS\0""3-POS\0" -#else - #define TR_SWTYPES "Défaut""Levier""2-POS\0""3-POS\0" -#endif +#define TR_SWTYPES "Rien\0 ""Levier""2-POS\0""3-POS\0" #define LEN_POTTYPES "\017" #define TR_POTTYPES "Rien\0 ""Pot avec centre""Inter multi-pos""Potentiomètre\0" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index ad7dd93da..2e294d533 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -82,6 +82,9 @@ #define LEN_UART3MODES "\016" #define TR_UART3MODES "OFF\0 ""Replica S-Port""Telemetria\0 ""SBUS Trainer\0 ""Debug\0" +#define LEN_SWTYPES "\006" +#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0" + #define LEN_POTTYPES "\017" #define TR_POTTYPES "None\0 ""Pot. con centro""Inter. Multipos""Potenziometro\0 " diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index d517a78f3..f853367eb 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -82,6 +82,9 @@ #define LEN_UART3MODES "\017" #define TR_UART3MODES "Wyłącz\0 ""S-Port Mirror\0 ""Telemetry\0 ""SBUS Trainer\0 ""Debug\0" +#define LEN_SWTYPES "\006" +#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0" + #define LEN_POTTYPES "\017" #define TR_POTTYPES "Brak\0 ""Poten z zapadką""Przeł.Wielopoz.""Potencjometr\0" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 4bbabc8e0..8a21847c3 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -82,6 +82,9 @@ #define LEN_UART3MODES "\017" #define TR_UART3MODES "OFF\0 ""S-Port Mirror\0 ""Telemetry\0 ""SBUS Trainer\0 ""Debug\0" +#define LEN_SWTYPES "\006" +#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0" + #define LEN_POTTYPES "\017" #define TR_POTTYPES "None\0 ""Pot with detent""Multipos Switch""Pot\0" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index d0a76ed23..c29e03d39 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -82,6 +82,9 @@ #define LEN_UART3MODES "\022" #define TR_UART3MODES "Av\0 ""Spegling av S-Port""Telemetri\0 ""SBUS Trainer\0 ""Debug\0" +#define LEN_SWTYPES "\006" +#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0" + #define LEN_POTTYPES "\020" #define TR_POTTYPES "Ingen\0 ""Mittläges-pot\0 ""Flerlägesväljare""Potentiometer\0" From 2325b0ea50090e2586cec42cbebed88d1c4915ad Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 27 Mar 2015 12:48:30 +0400 Subject: [PATCH 074/100] Heli translations --- radio/src/translations/en.h.txt | 6 +++--- radio/src/translations/es.h.txt | 4 ++-- radio/src/translations/fi.h.txt | 6 +++--- radio/src/translations/fr.h.txt | 6 +++--- radio/src/translations/it.h.txt | 4 ++-- radio/src/translations/pl.h.txt | 4 ++-- radio/src/translations/pt.h.txt | 6 +++--- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 5ffc88f2c..4f02b2ca1 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -611,9 +611,9 @@ #define TR_CHECKTRIMS CENTER "\006Check\012Trims" #define OFS_CHECKTRIMS CENTER_OFS+(9*FW) #define TR_SWASHTYPE "Swash Type" -#define TR_COLLECTIVE TR("Collective", "Coll. pitch") -#define TR_AILERON "Lateral cyc." -#define TR_ELEVATOR "Long. cyc." +#define TR_COLLECTIVE TR("Collective", "Coll. pitch source") +#define TR_AILERON "Lateral cyc. source" +#define TR_ELEVATOR "Long. cyc. source" #define TR_SWASHRING "Swash Ring" #define TR_ELEDIRECTION "ELE Direction" #define TR_AILDIRECTION "AIL Direction" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 596b6af3f..0fe37e137 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -564,8 +564,8 @@ #define OFS_CHECKTRIMS CENTER_OFS+(9*FW) #define TR_SWASHTYPE "Tipo ciclico" #define TR_COLLECTIVE TR("Colectivo", "Fuente Colectivo") -#define TR_AILERON "Aileron Source" -#define TR_ELEVATOR "Elevator Source" +#define TR_AILERON "Lateral cyc. source" +#define TR_ELEVATOR "Long. cyc. source" #define TR_SWASHRING "Ciclico" #define TR_ELEDIRECTION TR("ELE Direccion","Largo cyc. direccion") #define TR_AILDIRECTION TR("AIL Direccion","Lateral cyc. direccion") diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index f5d38b5d2..83f7b7f44 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -563,9 +563,9 @@ #define TR_CHECKTRIMS CENTER "\006Check\012Trims" #define OFS_CHECKTRIMS CENTER_OFS+(9*FW) #define TR_SWASHTYPE "Swash Type" -#define TR_COLLECTIVE TR("Collective","Collective source") -#define TR_AILERON "Aileron Source" -#define TR_ELEVATOR "Elevator Source" +#define TR_COLLECTIVE TR("Collective", "Coll. pitch source") +#define TR_AILERON "Lateral cyc. source" +#define TR_ELEVATOR "Long. cyc. source" #define TR_SWASHRING "Swash Ring" #define TR_ELEDIRECTION TR("ELE Direction","Long. cyc. direction") #define TR_AILDIRECTION TR("AIL Direction","Lateral cyc. direction") diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 36775f0db..db4948920 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -611,9 +611,9 @@ #define TR_CHECKTRIMS "\006Vérif\012Trims" #define OFS_CHECKTRIMS (9*FW) #define TR_SWASHTYPE TR("Type de Plat.", "Type de plateau") -#define TR_COLLECTIVE TR("Collectif", "Voie du pas collectif") -#define TR_AILERON "Aileron Source" -#define TR_ELEVATOR "Elevator Source" +#define TR_COLLECTIVE TR("Collectif", "Source collectif") +#define TR_AILERON "Source cyc. lat." +#define TR_ELEVATOR "Source cyc. lon." #define TR_SWASHRING TR("Limite Cycl.", "Limite du cyclique") #define TR_ELEDIRECTION TR("Inv. longitud.", "Inversion longitudinal") #define TR_AILDIRECTION TR("Inv. latéral", "Inversion latéral") diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 2e294d533..722307632 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -564,8 +564,8 @@ #define OFS_CHECKTRIMS (9*FW) #define TR_SWASHTYPE "Tipo Ciclico" #define TR_COLLECTIVE TR("Collettivo","Origine Collettivo") -#define TR_AILERON "Aileron Source" -#define TR_ELEVATOR "Elevator Source" +#define TR_AILERON "Lateral cyc. source" +#define TR_ELEVATOR "Long. cyc. source" #define TR_SWASHRING "Anello Ciclico" #define TR_ELEDIRECTION TR("Direzione ELE","Direzione Long. cyc.") #define TR_AILDIRECTION TR("Direzione AIL","Direzione Lateral cyc.") diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index f853367eb..18c4e9693 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -562,8 +562,8 @@ #define OFS_CHECKTRIMS CENTER_OFS+(9*FW) #define TR_SWASHTYPE "Typ tarczy" #define TR_COLLECTIVE TR("Kolektyw", "Źródło Kolektywu") -#define TR_AILERON "Aileron Source" -#define TR_ELEVATOR "Elevator Source" +#define TR_AILERON "Lateral cyc. source" +#define TR_ELEVATOR "Long. cyc. source" #define TR_SWASHRING "Tarcza " #define TR_ELEDIRECTION TR("Ster Wysokośc","Dług. Kierunku cyklu") #define TR_AILDIRECTION TR("Kierunek Lotk","Lateral cyc. direction") diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 8a21847c3..ec1fb9846 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -563,9 +563,9 @@ #define TR_CHECKTRIMS "\006Check\012Trims" #define OFS_CHECKTRIMS (9*FW) #define TR_SWASHTYPE "Ciclico Tipo" -#define TR_COLLECTIVE "Coletivo" -#define TR_AILERON "Aileron Source" -#define TR_ELEVATOR "Elevator Source" +#define TR_COLLECTIVE "Coletivo" +#define TR_AILERON "Lateral cyc. source" +#define TR_ELEVATOR "Long. cyc. source" #define TR_SWASHRING "Anel Coletivo" #define TR_ELEDIRECTION "PFD Sentido" #define TR_AILDIRECTION "AIL Sentido" From 95be0729cfc1c326c88e388e0aa8e604664a2307 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 28 Mar 2015 00:51:39 +0400 Subject: [PATCH 075/100] Fix switch handling on X9E, cleanup/harmonize code for all revisions --- radio/src/gui/Taranis/helpers.cpp | 21 +++++++++-------- radio/src/gui/Taranis/navigation.cpp | 2 +- radio/src/gui/Taranis/view_main.cpp | 29 +---------------------- radio/src/keys.h | 4 ---- radio/src/mixer.cpp | 35 +++++++--------------------- radio/src/myeeprom.h | 9 +++---- radio/src/switches.cpp | 31 +----------------------- radio/src/translations/cz.h.txt | 2 +- radio/src/translations/de.h.txt | 2 +- radio/src/translations/en.h.txt | 2 +- radio/src/translations/es.h.txt | 22 ++++++++++++----- radio/src/translations/fi.h.txt | 22 ++++++++++++----- radio/src/translations/fr.h.txt | 2 +- radio/src/translations/it.h.txt | 22 ++++++++++++----- radio/src/translations/pl.h.txt | 22 ++++++++++++----- radio/src/translations/pt.h.txt | 22 ++++++++++++----- radio/src/translations/se.h.txt | 22 ++++++++++++----- 17 files changed, 128 insertions(+), 143 deletions(-) diff --git a/radio/src/gui/Taranis/helpers.cpp b/radio/src/gui/Taranis/helpers.cpp index 06b9b8f15..f5ada5618 100755 --- a/radio/src/gui/Taranis/helpers.cpp +++ b/radio/src/gui/Taranis/helpers.cpp @@ -38,14 +38,8 @@ uint8_t switchToMix(uint8_t source) { - if (source <= 5*3) - return MIXSRC_FIRST_SWITCH + (source-1) / 3; - else if (source <= 17) - return MIXSRC_SF; - else if (source <= 20) - return MIXSRC_SG; - else - return MIXSRC_SH; + div_t qr = div(source-1, 3); + return qr.quot+MIXSRC_FIRST_SWITCH; } int circularIncDec(int current, int inc, int min, int max, IsValueAvailable isValueAvailable) @@ -94,6 +88,10 @@ bool isSourceAvailable(int source) return IS_POT_AVAILABLE(POT1+source-MIXSRC_FIRST_POT); } + if (source>=MIXSRC_FIRST_SWITCH && source<=MIXSRC_LAST_SWITCH) { + return SWITCH_EXISTS(source-MIXSRC_FIRST_SWITCH); + } + #if !defined(HELI) if (source>=MIXSRC_CYC1 && source<=MIXSRC_CYC3) return false; @@ -109,7 +107,7 @@ bool isSourceAvailable(int source) return false; } - if (source>=MIXSRC_SW1 && source<=MIXSRC_LAST_LOGICAL_SWITCH) { + if (source>=MIXSRC_FIRST_LOGICAL_SWITCH && source<=MIXSRC_LAST_LOGICAL_SWITCH) { LogicalSwitchData * cs = lswAddress(source-MIXSRC_SW1); return (cs->func != LS_FUNC_NONE); } @@ -156,9 +154,12 @@ bool isInputSourceAvailable(int source) if (source>=MIXSRC_Rud && source<=MIXSRC_MAX) return true; - if (source>=MIXSRC_TrimRud && source=MIXSRC_FIRST_TRIM && source<=MIXSRC_LAST_TRIM) return true; + if (source>=MIXSRC_FIRST_SWITCH && source<=MIXSRC_LAST_SWITCH) + return SWITCH_EXISTS(source-MIXSRC_FIRST_SWITCH); + if (source>=MIXSRC_FIRST_CH && source<=MIXSRC_LAST_CH) return true; diff --git a/radio/src/gui/Taranis/navigation.cpp b/radio/src/gui/Taranis/navigation.cpp index 18a7308b2..823c93377 100755 --- a/radio/src/gui/Taranis/navigation.cpp +++ b/radio/src/gui/Taranis/navigation.cpp @@ -53,7 +53,7 @@ int8_t checkIncDecMovedSwitch(int8_t val) div_t info = switchInfo(swtch); if (IS_TOGGLE(info.quot)) { if (info.rem != 0) { - val = (val == swtch ? swtch+2 : swtch); + val = (val == swtch ? swtch-2 : swtch); } } else { diff --git a/radio/src/gui/Taranis/view_main.cpp b/radio/src/gui/Taranis/view_main.cpp index 7ffd0bd89..481e348dd 100755 --- a/radio/src/gui/Taranis/view_main.cpp +++ b/radio/src/gui/Taranis/view_main.cpp @@ -571,7 +571,6 @@ void menuMainView(uint8_t event) lcd_bmp(BITMAP_X, BITMAP_Y, modelBitmap); // Switches -#if defined(REV9E) if (getSwitchCount() > 8) { for (int i=0; i 0 ? 3*i+2 : 3*i+1; - break; - case 6: - val = getValue(MIXSRC_SG); - sw = ((val < 0) ? 3*i : ((val == 0) ? 3*i+1 : 3*i+2)); - break; - case 7: - sw = getValue(MIXSRC_SH) > 0 ? 3*i+1 : 3*i; - break; - default: - { - val = getValue(MIXSRC_SA+i); - sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3)); - break; - } - } - putsSwitches((g_eeGeneral.view == VIEW_INPUTS) ? (i<4 ? 8*FW+3 : 24*FW+1) : (i<4 ? 3*FW+2 : 8*FW-1), (i%4)*FH+3*FH, sw, 0); - } -#endif if (g_eeGeneral.view == VIEW_TIMERS) { displayTimers(); diff --git a/radio/src/keys.h b/radio/src/keys.h index 2948b943f..5d70dd3a3 100644 --- a/radio/src/keys.h +++ b/radio/src/keys.h @@ -89,17 +89,13 @@ enum EnumKeys { SW_SE1, SW_SE2, SW_SF0, -#if defined(REV9E) SW_SF1, -#endif SW_SF2, SW_SG0, SW_SG1, SW_SG2, SW_SH0, -#if defined(REV9E) SW_SH1, -#endif SW_SH2, #if defined(REV9E) SW_SI0, diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index dff2cb1ed..de63bbc32 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -278,32 +278,15 @@ getvalue_t getValue(mixsrc_t i) else if (i<=MIXSRC_TrimAil) return calc1000toRESX((int16_t)8 * getTrimValue(mixerCurrentFlightMode, i-MIXSRC_TrimRud)); #if defined(PCBTARANIS) - else if (i==MIXSRC_SA) return (switchState(SW_SA0) ? -1024 : (switchState(SW_SA1) ? 0 : 1024)); - else if (i==MIXSRC_SB) return (switchState(SW_SB0) ? -1024 : (switchState(SW_SB1) ? 0 : 1024)); - else if (i==MIXSRC_SC) return (switchState(SW_SC0) ? -1024 : (switchState(SW_SC1) ? 0 : 1024)); - else if (i==MIXSRC_SD) return (switchState(SW_SD0) ? -1024 : (switchState(SW_SD1) ? 0 : 1024)); - else if (i==MIXSRC_SE) return (switchState(SW_SE0) ? -1024 : (switchState(SW_SE1) ? 0 : 1024)); -#if defined(REV9E) - else if (i==MIXSRC_SF) return (switchState(SW_SF0) ? -1024 : (switchState(SW_SF1) ? 0 : 1024)); -#else - else if (i==MIXSRC_SF) return (switchState(SW_SF0) ? -1024 : 1024); -#endif - else if (i==MIXSRC_SG) return (switchState(SW_SG0) ? -1024 : (switchState(SW_SG1) ? 0 : 1024)); -#if defined(REV9E) - else if (i==MIXSRC_SH) return (switchState(SW_SH0) ? -1024 : (switchState(SW_SH1) ? 0 : 1024)); - else if (i==MIXSRC_SI) return (switchState(SW_SI0) ? -1024 : (switchState(SW_SI1) ? 0 : 1024)); - else if (i==MIXSRC_SJ) return (switchState(SW_SJ0) ? -1024 : (switchState(SW_SJ1) ? 0 : 1024)); - else if (i==MIXSRC_SK) return (switchState(SW_SK0) ? -1024 : (switchState(SW_SK1) ? 0 : 1024)); - else if (i==MIXSRC_SL) return (switchState(SW_SL0) ? -1024 : (switchState(SW_SL1) ? 0 : 1024)); - else if (i==MIXSRC_SM) return (switchState(SW_SM0) ? -1024 : (switchState(SW_SM1) ? 0 : 1024)); - else if (i==MIXSRC_SN) return (switchState(SW_SN0) ? -1024 : (switchState(SW_SN1) ? 0 : 1024)); - else if (i==MIXSRC_SO) return (switchState(SW_SO0) ? -1024 : (switchState(SW_SO1) ? 0 : 1024)); - else if (i==MIXSRC_SP) return (switchState(SW_SP0) ? -1024 : (switchState(SW_SP1) ? 0 : 1024)); - else if (i==MIXSRC_SQ) return (switchState(SW_SQ0) ? -1024 : (switchState(SW_SQ1) ? 0 : 1024)); - else if (i==MIXSRC_SR) return (switchState(SW_SR0) ? -1024 : (switchState(SW_SR1) ? 0 : 1024)); -#else - else if (i==MIXSRC_SH) return (switchState(SW_SH0) ? -1024 : 1024); -#endif + else if ((i >= MIXSRC_FIRST_SWITCH) && (i <= MIXSRC_LAST_SWITCH)) { + mixsrc_t sw = i-MIXSRC_FIRST_SWITCH; + if (SWITCH_EXISTS(sw)) { + return (switchState((EnumKeys)(SW_BASE+(3*sw))) ? -1024 : (switchState((EnumKeys)(SW_BASE+(3*sw)+1)) ? 0 : 1024)); + } + else { + return 0; + } + } #else else if (i==MIXSRC_3POS) return (getSwitch(SW_ID0-SW_BASE+1) ? -1024 : (getSwitch(SW_ID1-SW_BASE+1) ? 0 : 1024)); // don't use switchState directly to give getSwitch possibility to hack values if needed for switch warning diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index e1028213f..373fbd667 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -1633,17 +1633,13 @@ enum SwitchSources { SWSRC_SE1, SWSRC_SE2, SWSRC_SF0, -#if defined(REV9E) SWSRC_SF1, -#endif SWSRC_SF2, SWSRC_SG0, SWSRC_SG1, SWSRC_SG2, SWSRC_SH0, -#if defined(REV9E) SWSRC_SH1, -#endif SWSRC_SH2, SWSRC_TRAINER = SWSRC_SH2, #if defined(REV9E) @@ -1827,6 +1823,7 @@ enum MixSources { MIXSRC_TrimEle, LUA_EXPORT("trim-ele", "Elevator trim") MIXSRC_TrimThr, LUA_EXPORT("trim-thr", "Throttle trim") MIXSRC_TrimAil, LUA_EXPORT("trim-ail", "Aileron trim") + MIXSRC_LAST_TRIM = MIXSRC_TrimAil, MIXSRC_FIRST_SWITCH, @@ -1850,6 +1847,9 @@ enum MixSources { MIXSRC_SP, LUA_EXPORT("sp", "Switch P") MIXSRC_SQ, LUA_EXPORT("sq", "Switch Q") MIXSRC_SR, LUA_EXPORT("sr", "Switch R") + MIXSRC_LAST_SWITCH = MIXSRC_SR, +#else + MIXSRC_LAST_SWITCH = MIXSRC_SH, #endif #else MIXSRC_3POS = MIXSRC_FIRST_SWITCH, @@ -1859,6 +1859,7 @@ enum MixSources { MIXSRC_AIL, MIXSRC_GEA, MIXSRC_TRN, + MIXSRC_LAST_SWITCH = MIXSRC_TRN, #endif MIXSRC_FIRST_LOGICAL_SWITCH, MIXSRC_SW1 = MIXSRC_FIRST_LOGICAL_SWITCH, LUA_EXPORT_MULTIPLE("ls", "Logical switch L%d", NUM_LOGICAL_SWITCH) diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp index 4660c26ef..6b7cba904 100644 --- a/radio/src/switches.cpp +++ b/radio/src/switches.cpp @@ -77,32 +77,10 @@ uint64_t switchesPos = 0; tmr10ms_t potsLastposStart[NUM_XPOTS] = { 0 }; uint8_t potsPos[NUM_XPOTS]; -#if defined(REV9E) div_t switchInfo(int switchPosition) { return div(switchPosition-SWSRC_FIRST_SWITCH, 3); } -#else -div_t switchInfo(int switchPosition) -{ - if (switchPosition <= SWSRC_SE2) { - return div(switchPosition-SWSRC_SA0, 3); - } - else if (switchPosition <= SWSRC_SF2) { - div_t qr = { 5, switchPosition == SWSRC_SF2 ? 2 : 0 }; - return qr; - } - else if (switchPosition <= SWSRC_SG2) { - div_t qr = { 6, switchPosition-SWSRC_SG0 }; - return qr; - } - else { - div_t qr = div(2*7+switchPosition-SWSRC_SH0, 2); - qr.rem *= 2; - return qr; - } -} -#endif uint64_t check2PosSwitchPosition(EnumKeys sw) { @@ -577,14 +555,7 @@ int8_t getMovedSwitch() uint8_t next = (1024+getValue(MIXSRC_SA+i)) / 1024; if (prev != next) { switches_states = (switches_states & (~mask)) | ((swarnstate_t)next << (i*2)); - if (i<5) - result = 1+(3*i)+next; - else if (i==5) - result = 1+(3*5)+(next!=0); - else if (i==6) - result = 1+(3*5)+2+next; - else - result = 1+(3*5)+2+3+(next!=0); + result = 1+(3*i)+next; } } } diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 358a4aa1a..a15eb24a3 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -482,7 +482,7 @@ #if defined(PCBTARANIS) && defined(REV9E) #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" #elif defined(PCBTARANIS) - #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" #else #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" #endif diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index b2bddbe42..cd7fce3ef 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -481,7 +481,7 @@ #if defined(PCBTARANIS) && defined(REV9E) #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" #elif defined(PCBTARANIS) - #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" #else #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" #endif diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 4f02b2ca1..5a228bfcd 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -481,7 +481,7 @@ #if defined(PCBTARANIS) && defined(REV9E) #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" #elif defined(PCBTARANIS) - #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" #else #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" #endif diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 0fe37e137..19920dab0 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -459,13 +459,23 @@ #define TR_ROTENC_SWITCHES #endif -#if defined(PCBTARANIS) - #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" - #define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" -#elif defined(CPUARM) - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" +#elif defined(PCBTARANIS) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" #else - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" + #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" +#endif + +#if defined(PCBTARANIS) + #if defined(REV9E) + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46" + #else + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" + #endif + #define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#else + #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" #endif #if defined(HELI) diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 83f7b7f44..3014a6201 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -459,13 +459,23 @@ #define TR_ROTENC_SWITCHES #endif -#if defined(PCBTARANIS) - #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" - #define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" -#elif defined(CPUARM) - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" +#elif defined(PCBTARANIS) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" #else - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" + #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" +#endif + +#if defined(PCBTARANIS) + #if defined(REV9E) + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46" + #else + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" + #endif + #define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#else + #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" #endif #if defined(HELI) diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index db4948920..b93defc44 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -481,7 +481,7 @@ #if defined(PCBTARANIS) && defined(REV9E) #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" #elif defined(PCBTARANIS) - #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" #else #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" #endif diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 722307632..ebb8d4feb 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -459,13 +459,23 @@ #define TR_ROTENC_SWITCHES #endif -#if defined(PCBTARANIS) - #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" - #define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" -#elif defined(CPUARM) - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" +#elif defined(PCBTARANIS) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" #else - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" + #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" +#endif + +#if defined(PCBTARANIS) + #if defined(REV9E) + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46" + #else + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" + #endif + #define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#else + #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" #endif #if defined(HELI) diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 18c4e9693..812562dd3 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -457,13 +457,23 @@ #define TR_ROTENC_SWITCHES #endif -#if defined(PCBTARANIS) - #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" - #define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" -#elif defined(CPUARM) - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "GAZ""SK ""SW ""LOT""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" +#elif defined(PCBTARANIS) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" #else - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "GAZ""SK ""SW ""LOT""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" + #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" +#endif + +#if defined(PCBTARANIS) + #if defined(REV9E) + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46" + #else + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" + #endif + #define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#else + #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" #endif #if defined(HELI) diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index ec1fb9846..f5351722b 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -459,13 +459,23 @@ #define TR_ROTENC_SWITCHES #endif -#if defined(PCBTARANIS) - #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" - #define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" -#elif defined(CPUARM) - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" +#elif defined(PCBTARANIS) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" #else - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" + #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" +#endif + +#if defined(PCBTARANIS) + #if defined(REV9E) + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46" + #else + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" + #endif + #define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#else + #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" #endif #if defined(HELI) diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index c29e03d39..41166261f 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -459,13 +459,23 @@ #define TR_ROTENC_SWITCHES #endif -#if defined(PCBTARANIS) - #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" - #define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "PÅ\0""En\0" -#elif defined(CPUARM) - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "PÅ\0""En\0" +#if defined(PCBTARANIS) && defined(REV9E) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301" +#elif defined(PCBTARANIS) + #define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301" #else - #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "PÅ\0""En\0" + #define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" +#endif + +#if defined(PCBTARANIS) + #if defined(REV9E) + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46" + #else + #define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36" + #endif + #define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" +#else + #define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One" #endif #if defined(HELI) From d8fa6beb83dc79e6037d7a12022720aa8feca9cc Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 28 Mar 2015 01:24:00 +0400 Subject: [PATCH 076/100] Should fix gtest --- radio/src/tests/mixer.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/radio/src/tests/mixer.cpp b/radio/src/tests/mixer.cpp index 393c2e0ff..70f094350 100644 --- a/radio/src/tests/mixer.cpp +++ b/radio/src/tests/mixer.cpp @@ -761,6 +761,9 @@ TEST(Mixer, SlowOnSwitchSource) g_model.mixData[0].weight = 100; g_model.mixData[0].speedUp = SLOW_STEP*5; g_model.mixData[0].speedDown = SLOW_STEP*5; +#if defined(CPUARM) + g_eeGeneral.switchConfig = 0x03; +#endif s_mixer_first_run_done = true; From 26fdac072a6cba83cba5e269c4ea461490a9d6c8 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 28 Mar 2015 01:31:22 +0400 Subject: [PATCH 077/100] Taranis only --- radio/src/tests/mixer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/tests/mixer.cpp b/radio/src/tests/mixer.cpp index 70f094350..109fb6d32 100644 --- a/radio/src/tests/mixer.cpp +++ b/radio/src/tests/mixer.cpp @@ -761,7 +761,7 @@ TEST(Mixer, SlowOnSwitchSource) g_model.mixData[0].weight = 100; g_model.mixData[0].speedUp = SLOW_STEP*5; g_model.mixData[0].speedDown = SLOW_STEP*5; -#if defined(CPUARM) +#if defined(PCBTARANIS) g_eeGeneral.switchConfig = 0x03; #endif From 19ff2d6f39787f80578de043f55b840640eeb52e Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 28 Mar 2015 02:10:13 +0400 Subject: [PATCH 078/100] Missing switches in companion --- companion/src/eeprominterface.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 7575b63f2..409f0df5e 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -533,15 +533,19 @@ QString RawSwitch::toString() SwitchUp('C'), QString::fromUtf8("SC-"), SwitchDn('C'), SwitchUp('D'), QString::fromUtf8("SD-"), SwitchDn('D'), SwitchUp('E'), QString::fromUtf8("SE-"), SwitchDn('E'), - SwitchUp('F'), SwitchDn('F'), + SwitchUp('F'), QString::fromUtf8("SF-"), SwitchDn('F'), SwitchUp('G'), QString::fromUtf8("SG-"), SwitchDn('G'), - SwitchUp('H'), SwitchDn('H'), - SwitchUp('I'), SwitchDn('I'), - SwitchUp('J'), SwitchDn('J'), - SwitchUp('K'), SwitchDn('K'), - SwitchUp('L'), SwitchDn('L'), - SwitchUp('M'), SwitchDn('M'), - SwitchUp('N'), SwitchDn('N'), + SwitchUp('H'), QString::fromUtf8("SH-"), SwitchDn('H'), + SwitchUp('I'), QString::fromUtf8("SI-"), SwitchDn('I'), + SwitchUp('J'), QString::fromUtf8("SJ-"), SwitchDn('J'), + SwitchUp('K'), QString::fromUtf8("SK-"), SwitchDn('K'), + SwitchUp('L'), QString::fromUtf8("SL-"), SwitchDn('L'), + SwitchUp('M'), QString::fromUtf8("SM-"), SwitchDn('M'), + SwitchUp('N'), QString::fromUtf8("SN-"), SwitchDn('N'), + SwitchUp('O'), QString::fromUtf8("SO-"), SwitchDn('O'), + SwitchUp('P'), QString::fromUtf8("SP-"), SwitchDn('P'), + SwitchUp('Q'), QString::fromUtf8("SQ-"), SwitchDn('Q'), + SwitchUp('R'), QString::fromUtf8("SR-"), SwitchDn('R'), }; static const QString logicalSwitches[] = { From 930fd7443e0ac14daeecb54c334d048aad42666c Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 28 Mar 2015 11:42:45 +0400 Subject: [PATCH 079/100] Companion UI support --- companion/src/eeprominterface.cpp | 16 +++++++--------- companion/src/eeprominterface.h | 1 + companion/src/helpers.cpp | 21 ++++++++++++++++----- companion/src/helpers.h | 2 +- companion/src/modeledit/customfunctions.cpp | 8 ++++---- companion/src/modeledit/expodialog.cpp | 2 +- companion/src/modeledit/heli.cpp | 6 +++--- companion/src/modeledit/logicalswitches.cpp | 6 +++--- companion/src/modeledit/mixerdialog.cpp | 2 +- 9 files changed, 37 insertions(+), 27 deletions(-) diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 409f0df5e..3fd6e5ee2 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -995,14 +995,7 @@ void LimitData::clear() GeneralSettings::SwitchInfo GeneralSettings::switchInfoFromSwitchPositionTaranis(unsigned int index) { - if (index <= 3*5) - return SwitchInfo((index-1)/3, (index-1)%3); - else if (index <= 17) - return SwitchInfo(5, index==17 ? 2 : 0); - else if (index <= 20) - return SwitchInfo(6, index-18); - else - return SwitchInfo(7+(index-21)/2, 2*((index-21)%2)); + return SwitchInfo((index-1)/3, (index-1)%3); } bool GeneralSettings::switchPositionAllowedTaranis(int index) const @@ -1015,7 +1008,12 @@ bool GeneralSettings::switchPositionAllowedTaranis(int index) const else if (info.position == 1) return switchConfig[info.index] == SWITCH_3POS; else - return true; + return switchConfig[info.index] != SWITCH_NONE; +} + +bool GeneralSettings::switchSourceAllowedTaranis(int index) const +{ + return switchConfig[index] != SWITCH_NONE; } GeneralSettings::GeneralSettings() diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index b982da9d0..e26d88581 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -1174,6 +1174,7 @@ class GeneralSettings { static SwitchInfo switchInfoFromSwitchPositionTaranis(unsigned int index); bool switchPositionAllowedTaranis(int index) const; + bool switchSourceAllowedTaranis(int index) const; }; class RadioData { diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index eaaeaca17..f52aa506d 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -412,10 +412,13 @@ void populateSwitchCB(QComboBox *b, const RawSwitch & value, const GeneralSettin } for (int i=-GetCurrentFirmware()->getCapability(SwitchesPositions); i<0; i++) { - if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchPositionAllowedTaranis(i)) - continue; item = RawSwitch(SWITCH_TYPE_SWITCH, i); b->addItem(item.toString(), item.toValue()); + if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchPositionAllowedTaranis(i)){ + QModelIndex index = b->model()->index(b->count()-1, 0); + QVariant v(0); + b->model()->setData(index, v, Qt::UserRole - 1); + } if (item == value) b->setCurrentIndex(b->count()-1); } @@ -433,10 +436,13 @@ void populateSwitchCB(QComboBox *b, const RawSwitch & value, const GeneralSettin } for (int i=1; i<=GetCurrentFirmware()->getCapability(SwitchesPositions); i++) { - if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchPositionAllowedTaranis(i)) - continue; item = RawSwitch(SWITCH_TYPE_SWITCH, i); b->addItem(item.toString(), item.toValue()); + if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchPositionAllowedTaranis(i)){ + QModelIndex index = b->model()->index(b->count()-1, 0); + QVariant v(0); + b->model()->setData(index, v, Qt::UserRole - 1); + } if (item == value) b->setCurrentIndex(b->count()-1); } @@ -525,7 +531,7 @@ void populateGVCB(QComboBox *b, int value) } } -void populateSourceCB(QComboBox *b, const RawSource & source, const ModelData * model, unsigned int flags) +void populateSourceCB(QComboBox *b, const RawSource & source, const GeneralSettings generalSettings, const ModelData * model, unsigned int flags) { BoardEnum board = GetCurrentFirmware()->getBoard(); RawSource item; @@ -590,6 +596,11 @@ void populateSourceCB(QComboBox *b, const RawSource & source, const ModelData * for (int i=0; igetCapability(Switches); i++) { item = RawSource(SOURCE_TYPE_SWITCH, i); b->addItem(item.toString(model), item.toValue()); + if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchSourceAllowedTaranis(i)) { + QModelIndex index = b->model()->index(b->count()-1, 0); + QVariant v(0); + b->model()->setData(index, v, Qt::UserRole - 1); + } if (item == source) b->setCurrentIndex(b->count()-1); } diff --git a/companion/src/helpers.h b/companion/src/helpers.h index c57cdbda6..035176e58 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -115,7 +115,7 @@ QString getPhasesStr(unsigned int phases, ModelData * model); // void populateGVarCB(QComboBox *b, int value, int min, int max,int pgvars=5); //TODO: Clean Up void populateGVCB(QComboBox *b, int value); -void populateSourceCB(QComboBox *b, const RawSource &source, const ModelData * model, unsigned int flags); +void populateSourceCB(QComboBox *b, const RawSource &source, const GeneralSettings generalSettings, const ModelData * model, unsigned int flags); QString getPhaseName(int val, const char * phasename=NULL); QString getInputStr(ModelData * model, int index); QString image2qstring(QImage image); diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index f7c8d0eab..600278d73 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -714,18 +714,18 @@ void CustomFunctionsPanel::populateFuncParamCB(QComboBox *b, uint function, unsi b->setCurrentIndex(value); } else if (function==FuncVolume) { - populateSourceCB(b, RawSource(value), model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_TRIMS); + populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_TRIMS); } else if (function==FuncPlayValue) { - populateSourceCB(b, RawSource(value), model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_SWITCHES|POPULATE_GVARS|POPULATE_TRIMS|POPULATE_TELEMETRYEXT); + populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_SWITCHES|POPULATE_GVARS|POPULATE_TRIMS|POPULATE_TELEMETRYEXT); } else if (function>=FuncAdjustGV1 && function<=FuncAdjustGVLast) { switch (adjustmode) { case 1: - populateSourceCB(b, RawSource(value), model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_TRIMS|POPULATE_SWITCHES); + populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_TRIMS|POPULATE_SWITCHES); break; case 2: - populateSourceCB(b, RawSource(value), model, POPULATE_GVARS); + populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_GVARS); break; case 3: b->clear(); diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index 51c51200b..54f7fb61f 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -60,7 +60,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G if (firmware->getCapability(VirtualInputs)) { ui->inputName->setMaxLength(4); - populateSourceCB(ui->sourceCB, ed->srcRaw, &model, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | POPULATE_TELEMETRY); + populateSourceCB(ui->sourceCB, ed->srcRaw, generalSettings, &model, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | POPULATE_TELEMETRY); ui->sourceCB->removeItem(0); } else { diff --git a/companion/src/modeledit/heli.cpp b/companion/src/modeledit/heli.cpp index 53d6541f9..391c1c328 100644 --- a/companion/src/modeledit/heli.cpp +++ b/companion/src/modeledit/heli.cpp @@ -48,11 +48,11 @@ void HeliPanel::update() lock = true; ui->swashType->setCurrentIndex(model->swashRingData.type); - populateSourceCB(ui->swashCollectiveSource, model->swashRingData.collectiveSource, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS); + populateSourceCB(ui->swashCollectiveSource, model->swashRingData.collectiveSource, generalSettings, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS); ui->swashRingVal->setValue(model->swashRingData.value); if (firmware->getCapability(VirtualInputs)) { - populateSourceCB(ui->swashElevatorSource, model->swashRingData.elevatorSource, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS); - populateSourceCB(ui->swashAileronSource, model->swashRingData.aileronSource, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS); + populateSourceCB(ui->swashElevatorSource, model->swashRingData.elevatorSource, generalSettings, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS); + populateSourceCB(ui->swashAileronSource, model->swashRingData.aileronSource, generalSettings, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS); ui->swashElevatorWeight->setValue(model->swashRingData.elevatorWeight); ui->swashAileronWeight->setValue(model->swashRingData.aileronWeight); ui->swashCollectiveWeight->setValue(model->swashRingData.collectiveWeight); diff --git a/companion/src/modeledit/logicalswitches.cpp b/companion/src/modeledit/logicalswitches.cpp index 5a156b49c..4228b7141 100644 --- a/companion/src/modeledit/logicalswitches.cpp +++ b/companion/src/modeledit/logicalswitches.cpp @@ -301,7 +301,7 @@ void LogicalSwitchesPanel::setSwitchWidgetVisibility(int i) { case LS_FAMILY_VOFS: mask |= SOURCE1_VISIBLE; - populateSourceCB(cswitchSource1[i], source, model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource1[i], source, generalSettings, model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); cswitchOffset[i]->setDecimals(range.decimals); cswitchOffset[i]->setSingleStep(range.step); if (source.isTimeBased()) { @@ -346,8 +346,8 @@ void LogicalSwitchesPanel::setSwitchWidgetVisibility(int i) break; case LS_FAMILY_VCOMP: mask |= SOURCE1_VISIBLE | SOURCE2_VISIBLE; - populateSourceCB(cswitchSource1[i], RawSource(model->logicalSw[i].val1), model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); - populateSourceCB(cswitchSource2[i], RawSource(model->logicalSw[i].val2), model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource1[i], RawSource(model->logicalSw[i].val1), generalSettings, model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource2[i], RawSource(model->logicalSw[i].val2), generalSettings, model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); break; case LS_FAMILY_TIMER: mask |= VALUE1_VISIBLE | VALUE2_VISIBLE; diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 89596f610..12a754673 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -19,7 +19,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G this->setWindowTitle(tr("DEST -> CH%1").arg(md->destCh)); - populateSourceCB(ui->sourceCB, md->srcRaw, &model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS); + populateSourceCB(ui->sourceCB, md->srcRaw, generalSettings, &model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS); ui->sourceCB->removeItem(0); int limit = firmware->getCapability(OffsetWeight); From 0e6d9d35d9fb1a573dce8a19b1ba28ef472a21fe Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 28 Mar 2015 12:56:28 +0400 Subject: [PATCH 080/100] Switch warnings were broken on all platforms --- companion/src/modeledit/setup.cpp | 32 ++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index ebc9abf6f..01a57b716 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -495,19 +495,16 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen slider->setTickPosition(QSlider::TicksBothSides); slider->setMinimumSize(QSize(30, 50)); slider->setMaximumSize(QSize(50, 50)); + slider->setSingleStep(1); + slider->setPageStep(1); + slider->setTickInterval(1); if (IS_TARANIS(board)) { label->setText(switchesX9D[i]); - slider->setMaximum(2); - slider->setSingleStep(generalSettings.switchConfig[i] == GeneralSettings::SWITCH_3POS ? 1 : 2); - slider->setPageStep(slider->singleStep()); - slider->setTickInterval(slider->singleStep()); + slider->setMaximum(generalSettings.switchConfig[i] == GeneralSettings::SWITCH_3POS ? 2 : 1); } else { label->setText(switches9X[i]); slider->setMaximum(i==0 ? 2 : 1); - slider->setSingleStep(1); - slider->setPageStep(1); - slider->setTickInterval(1); } cb->setProperty("index", i); ui->switchesStartupLayout->addWidget(label, 0, i+1); @@ -735,12 +732,25 @@ void SetupPanel::updateBeepCenter() void SetupPanel::updateStartupSwitches() { lock = true; + + unsigned int switchStates = model->switchWarningStates; + unsigned int value; for (int i=0; iproperty("index").toInt(); bool enabled = !(model->switchWarningEnable & (1 << index)); + if (IS_TARANIS(GetEepromInterface()->getBoard())) { + value = (switchStates >> 2*index) & 0x03; + if (generalSettings.switchConfig[index] != GeneralSettings::SWITCH_3POS && value == 2) + value = 1; + } + else { + value = (i==0 ? switchStates & 0x3 : switchStates & 0x1); + switchStates >>= (i==0 ? 2 : 1); + } + slider->setValue(value); slider->setEnabled(enabled); cb->setChecked(enabled); } @@ -760,16 +770,20 @@ void SetupPanel::startupSwitchEdited(int value) mask = 0x03 << shift; } else { - if (index == 1) { + if (index == 0) { mask = 0x03; } else { - shift = index; + shift = index+1; mask = 0x01 << shift; } } model->switchWarningStates &= ~mask; + + if (IS_TARANIS(GetEepromInterface()->getBoard()) && generalSettings.switchConfig[index] != GeneralSettings::SWITCH_3POS) { + if (value == 1) value = 2; + } if (value) { model->switchWarningStates |= (value << shift); From 3c7d70328ac5763a1d658fe7903fcbc805826d49 Mon Sep 17 00:00:00 2001 From: bsongis Date: Sat, 28 Mar 2015 10:01:20 +0100 Subject: [PATCH 081/100] Fixes #2050 --- radio/src/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/Makefile b/radio/src/Makefile index 07b11225b..e28de2bed 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -307,7 +307,7 @@ MIXERS_MONITOR = NO # Use newlib-nano # Values = NO, YES -NANO = YES +NANO = NO # Use custom bin based allocator for Lua # Values = NO, YES From 531854dd976a3dc0700bfb45aebf728ed60a0767 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 28 Mar 2015 14:37:56 +0400 Subject: [PATCH 082/100] Add source popup in telemetry screen settings --- radio/src/gui/Taranis/menu_model_telemetry.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 1972e80ff..575404846 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -767,7 +767,7 @@ void menuModelTelemetry(uint8_t event) const coord_t pos[] = {TELEM_COL1, TELEM_COL2, TELEM_COL3}; putsMixerSource(pos[c], y, value, cellAttr); if (cellAttr && s_editMode>0) { - CHECK_INCDEC_MODELVAR_ZERO_CHECK(event, value, MIXSRC_LAST_TELEM, isSourceAvailable); + value = checkIncDec(event, value, 0, MIXSRC_LAST_TELEM, EE_MODEL|INCDEC_SOURCE|NO_INCDEC_MARKS, isSourceAvailable); } } if (attr && m_posHorz == NUM_LINE_ITEMS) { From 8a9686716c77aecfdea854d608a45f87057b1546 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 28 Mar 2015 15:16:52 +0400 Subject: [PATCH 083/100] GVARs added to source popup --- radio/src/gui/Taranis/menus.h | 2 +- radio/src/gui/Taranis/navigation.cpp | 4 ++++ 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 | 7 ++++--- radio/src/translations/fi.h.txt | 1 + radio/src/translations/fr.h.txt | 1 + radio/src/translations/it.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, 20 insertions(+), 4 deletions(-) diff --git a/radio/src/gui/Taranis/menus.h b/radio/src/gui/Taranis/menus.h index ddb639f46..283a51809 100755 --- a/radio/src/gui/Taranis/menus.h +++ b/radio/src/gui/Taranis/menus.h @@ -327,7 +327,7 @@ extern uint8_t s_warning_info_flags; #define NAVIGATION_MENUS #define MENU_ADD_ITEM(s) s_menu[s_menu_count++] = s -#define MENU_MAX_LINES 11 +#define MENU_MAX_LINES 12 #define MENU_MAX_DISPLAY_LINES 6 #define MENU_ADD_SD_ITEM(s) MENU_ADD_ITEM(s) #define MENU_LINE_LENGTH (LEN_MODEL_NAME+12) diff --git a/radio/src/gui/Taranis/navigation.cpp b/radio/src/gui/Taranis/navigation.cpp index 823c93377..9441fd696 100755 --- a/radio/src/gui/Taranis/navigation.cpp +++ b/radio/src/gui/Taranis/navigation.cpp @@ -95,6 +95,8 @@ void onLongEnterPress(const char *result) s_source = MIXSRC_FIRST_TRAINER; else if (result == STR_MENU_CHANNELS) s_source = getFirstAvailableSource(MIXSRC_FIRST_CH, MIXSRC_LAST_CH, isSourceAvailable); + else if (result == STR_MENU_GVARS) + s_source = MIXSRC_FIRST_GVAR; else if (result == STR_MENU_TELEMETRY) { for (int i = 0; i < TELEM_VALUES_MAX; i++) { @@ -270,6 +272,8 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int if (i_min <= MIXSRC_FIRST_SWITCH && i_max >= MIXSRC_FIRST_SWITCH) MENU_ADD_ITEM(STR_MENU_SWITCHES); if (i_min <= MIXSRC_FIRST_TRAINER && i_max >= MIXSRC_FIRST_TRAINER) MENU_ADD_ITEM(STR_MENU_TRAINER); if (i_min <= MIXSRC_FIRST_CH && i_max >= MIXSRC_FIRST_CH) MENU_ADD_ITEM(STR_MENU_CHANNELS); + if (i_min <= MIXSRC_FIRST_GVAR && i_max >= MIXSRC_FIRST_GVAR && isValueAvailable(MIXSRC_FIRST_GVAR)) + MENU_ADD_ITEM(STR_MENU_GVARS); if (i_min <= MIXSRC_FIRST_TELEM && i_max >= MIXSRC_FIRST_TELEM) { bool available = false; diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index fe3d2aeef..210b07221 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -598,6 +598,7 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR; const pm_char STR_MENU_SWITCHES[] PROGMEM = TR_MENU_SWITCHES; const pm_char STR_MENU_TRAINER[] PROGMEM = TR_MENU_TRAINER; const pm_char STR_MENU_CHANNELS[] PROGMEM = TR_MENU_CHANNELS; + const pm_char STR_MENU_GVARS[] PROGMEM = TR_MENU_GVARS; const pm_char STR_MENU_TELEMETRY[] PROGMEM = TR_MENU_TELEMETRY; #endif diff --git a/radio/src/translations.h b/radio/src/translations.h index c0e857fc6..307b7cb4e 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -808,6 +808,7 @@ extern const pm_char STR_BLCOLOR[]; extern const pm_char STR_MENU_SWITCHES[]; extern const pm_char STR_MENU_TRAINER[]; extern const pm_char STR_MENU_CHANNELS[]; + extern const pm_char STR_MENU_GVARS[]; extern const pm_char STR_MENU_TELEMETRY[]; #endif diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index a15eb24a3..9628c5512 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1075,6 +1075,7 @@ #define TR_MENU_SWITCHES "\312Switches" #define TR_MENU_TRAINER "\317Trainer" #define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_GVARS "\311GVars" #define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index cd7fce3ef..057af4933 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1074,6 +1074,7 @@ #define TR_MENU_SWITCHES "\312Switches" #define TR_MENU_TRAINER "\317Trainer" #define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_GVARS "\311GVars" #define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 5a228bfcd..7dc6e60b2 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1074,6 +1074,7 @@ #define TR_MENU_SWITCHES "\312Switches" #define TR_MENU_TRAINER "\317Trainer" #define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_GVARS "\311GVars" #define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 19920dab0..69eba5a1a 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -1014,7 +1014,7 @@ #define TR_TELEMETRYFULL "All telemetry slots full!" #define TR_MENU_INPUTS "\314Inputs" -#define TR_MENU_LUA "Lua scripts" +#define TR_MENU_LUA "\322Lua scripts" #define TR_MENU_STICKS "\307Sticks" #define TR_MENU_POTS "\310Pots" #define TR_MENU_MAX "\315MAX" @@ -1022,8 +1022,9 @@ #define TR_MENU_TRIMS "\313Trims" #define TR_MENU_SWITCHES "\312Switches" #define TR_MENU_TRAINER "\317Trainer" -#define TR_MENU_CHANNELS "\318Channels" -#define TR_MENU_TELEMETRY "\319Telemetry" +#define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_GVARS "\311GVars" +#define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 3014a6201..02bc327f2 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1023,6 +1023,7 @@ #define TR_MENU_SWITCHES "\312Switches" #define TR_MENU_TRAINER "\317Trainer" #define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_GVARS "\311GVars" #define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index b93defc44..e59fa3060 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1066,6 +1066,7 @@ #define TR_MENU_SWITCHES "\312Inters" #define TR_MENU_TRAINER "\317Ecolage" #define TR_MENU_CHANNELS "\320Canaux" +#define TR_MENU_GVARS "\311Vars. glob." #define TR_MENU_TELEMETRY "\321Télémesure" #define ZSTR_RSSI "RSSI" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index ebb8d4feb..cb59f05c6 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -1023,6 +1023,7 @@ #define TR_MENU_SWITCHES "\312Switches" #define TR_MENU_TRAINER "\317Trainer" #define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_GVARS "\311GVars" #define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 812562dd3..124d0ca2a 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -1021,6 +1021,7 @@ #define TR_MENU_SWITCHES "\312Switches" #define TR_MENU_TRAINER "\317Trainer" #define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_GVARS "\311GVars" #define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index f5351722b..254352b44 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1023,6 +1023,7 @@ #define TR_MENU_SWITCHES "\312Switches" #define TR_MENU_TRAINER "\317Trainer" #define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_GVARS "\311GVars" #define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 41166261f..41420da12 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -1023,6 +1023,7 @@ #define TR_MENU_SWITCHES "\312Switches" #define TR_MENU_TRAINER "\317Trainer" #define TR_MENU_CHANNELS "\320Channels" +#define TR_MENU_GVARS "\311GVars" #define TR_MENU_TELEMETRY "\321Telemetry" #define ZSTR_RSSI "RSSI" From f98b0324779479731ab266e562dd2deb5dc330d3 Mon Sep 17 00:00:00 2001 From: maxpaperno Date: Sat, 28 Mar 2015 10:10:44 -0400 Subject: [PATCH 084/100] Companion/Sim: Add more fields to telemetry simulator UI; Allow using hex notation for values; Don't send blank values. --- companion/src/simulation/telemetrysimu.cpp | 122 +++++++- companion/src/simulation/telemetrysimu.ui | 311 +++++++++++++++++++-- 2 files changed, 408 insertions(+), 25 deletions(-) diff --git a/companion/src/simulation/telemetrysimu.cpp b/companion/src/simulation/telemetrysimu.cpp index 6fab9de7c..c576a8b1f 100644 --- a/companion/src/simulation/telemetrysimu.cpp +++ b/companion/src/simulation/telemetrysimu.cpp @@ -61,34 +61,142 @@ void generateSportPacket(uint8_t * packet, uint8_t dataId, uint8_t prim, uint16_ void TelemetrySimulator::generateTelemetryFrame() { static int item = 0; + bool ok = true; uint8_t buffer[FRSKY_SPORT_PACKET_SIZE]; + memset(buffer, 0, sizeof(buffer)); switch(item++) { case 0: - generateSportPacket(buffer, 1, DATA_FRAME, RSSI_ID, LIMIT(0, ui->Rssi->text().toInt(), 0xFF)); + if (ui->Rssi->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, RSSI_ID, LIMIT(0, ui->Rssi->text().toInt(&ok, 0), 0xFF)); break; case 1: -#if defined(XJT_VERSION_ID) generateSportPacket(buffer, 1, DATA_FRAME, XJT_VERSION_ID, 11); -#endif break; case 2: - generateSportPacket(buffer, 1, DATA_FRAME, SWR_ID, LIMIT(0, ui->Swr->text().toInt(), 0xFF)); + if (ui->Swr->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, SWR_ID, LIMIT(0, ui->Swr->text().toInt(&ok, 0), 0xFFFF)); break; case 3: - generateSportPacket(buffer, 1, DATA_FRAME, ADC1_ID, LIMIT(0, ui->A1->text().toInt(), 0xFF)); + if (ui->A1->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, ADC1_ID, LIMIT(0, ui->A1->text().toInt(&ok, 0), 0xFF)); break; case 4: - generateSportPacket(buffer, 1, DATA_FRAME, ADC2_ID, LIMIT(0, ui->A2->text().toInt(), 0xFF)); + if (ui->A2->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, ADC2_ID, LIMIT(0, ui->A2->text().toInt(&ok, 0), 0xFF)); + break; + + case 5: + if (ui->A3->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, A3_FIRST_ID, LIMIT(0, ui->A3->text().toInt(&ok, 0), 0xFFFFFFFF)); + break; + + case 6: + if (ui->A4->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, A4_FIRST_ID, LIMIT(0, ui->A4->text().toInt(&ok, 0), 0xFFFFFFFF)); + break; + + case 7: + if (ui->T1->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, T1_FIRST_ID, LIMIT(-0x7FFFFFFF, ui->T1->text().toInt(&ok, 0), 0x7FFFFFFF)); + break; + + case 8: + if (ui->T2->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, T2_FIRST_ID, LIMIT(-0x7FFFFFFF, ui->T2->text().toInt(&ok, 0), 0x7FFFFFFF)); + break; + + case 9: + if (ui->rpm->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, RPM_FIRST_ID, LIMIT(0, ui->rpm->text().toInt(&ok, 0), 0xFFFF)); + break; + + case 10: + if (ui->fuel->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, FUEL_FIRST_ID, LIMIT(0, ui->fuel->text().toInt(&ok, 0), 0xFFFF)); + break; + + case 11: + if (ui->aspeed->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, AIR_SPEED_FIRST_ID, LIMIT(0, ui->aspeed->text().toInt(&ok, 0), 0xFFFFFFFF)); + break; + + case 12: + if (ui->vspeed->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, VARIO_FIRST_ID, LIMIT(-0x7FFFFFFF, ui->vspeed->text().toInt(&ok, 0), 0x7FFFFFFF)); + break; + + case 13: + if (ui->valt->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, ALT_FIRST_ID, LIMIT(-0x7FFFFFFF, ui->valt->text().toInt(&ok, 0), 0x7FFFFFFF)); + break; + + case 14: + if (ui->accx->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, ACCX_FIRST_ID, LIMIT(-0x7FFFFFFF, ui->accx->text().toInt(&ok, 0), 0x7FFFFFFF)); + break; + + case 15: + if (ui->accy->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, ACCY_FIRST_ID, LIMIT(-0x7FFFFFFF, ui->accy->text().toInt(&ok, 0), 0x7FFFFFFF)); + break; + + case 16: + if (ui->accz->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, ACCZ_FIRST_ID, LIMIT(-0x7FFFFFFF, ui->accz->text().toInt(&ok, 0), 0x7FFFFFFF)); + break; + + case 17: + if (ui->vfas->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, VFAS_FIRST_ID, LIMIT(0, ui->vfas->text().toInt(&ok, 0), 0xFFFFFFFF)); + break; + + case 18: + if (ui->curr->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, CURR_FIRST_ID, LIMIT(0, ui->curr->text().toInt(&ok, 0), 0xFFFFFFFF)); + break; + + case 19: + if (ui->cells->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, CELLS_FIRST_ID, LIMIT(0, ui->cells->text().toInt(&ok, 0), 0xFFFFFFFF)); + break; + + case 20: + if (ui->gps_alt->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, GPS_ALT_FIRST_ID, LIMIT(-0x7FFFFFFF, ui->gps_alt->text().toInt(&ok, 0), 0x7FFFFFFF)); + break; + + case 21: + if (ui->gps_speed->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, GPS_SPEED_FIRST_ID, LIMIT(0, ui->gps_speed->text().toInt(&ok, 0), 0xFFFFFFFF)); + break; + + case 22: + if (ui->gps_course->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, GPS_COURS_FIRST_ID, LIMIT(0, ui->gps_course->text().toInt(&ok, 0), 0xFFFFFFFF)); + break; + + case 23: + if (ui->gps_time->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, GPS_TIME_DATE_FIRST_ID, LIMIT(0, ui->gps_time->text().toInt(&ok, 0), 0xFFFFFFFF)); + break; + + case 24: + if (ui->gps_latlon->text().length()) + generateSportPacket(buffer, 1, DATA_FRAME, GPS_LONG_LATI_FIRST_ID, LIMIT(0, ui->gps_latlon->text().toInt(&ok, 0), 0xFFFFFFFF)); break; default: item = 0; return; } - simulator->sendTelemetry(buffer, 9); + + if (ok && buffer[0]) + simulator->sendTelemetry(buffer, FRSKY_SPORT_PACKET_SIZE); + else + onTimerEvent(); } diff --git a/companion/src/simulation/telemetrysimu.ui b/companion/src/simulation/telemetrysimu.ui index 6f6a661a4..5b3705dab 100644 --- a/companion/src/simulation/telemetrysimu.ui +++ b/companion/src/simulation/telemetrysimu.ui @@ -6,67 +6,342 @@ 0 0 - 184 - 165 + 278 + 384 Telemetry Simulator + + 6 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Vario Altitude + + + V-ALT + + + + + + + Vario Vertical Speed + + + V-VSPD + + + + + + + + + + + + + + + + ACCZ + + + + + + + GPS Time + + + GPS-T + + + + + + + + + + ACCX + + + + + + - + - - + + - + + + + + + + GPS Lat/Lon + + + GPS-LL + + + + + + + VFAS + + + FAS-V + + + + + + + GPS Speed + + + GPS-S + + + + + + + CELLS + + + + + + + + + + + + + + + + ACCY + + + + + + + GPS Course + + + GPS-C + + + + + + + + + + + + + GPS Altitude + + + GPS-A + + + + + + + CURRENT + + + FAS-C + + + + + + + 30 + + + + RSSI - - - - - + + - A1 + 75 - + SWR - - + + + + FR_ID_AIR_SPEED + - simulate + ASPD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A1 + + + + A2 - - + + + + A3 + + + + + + + A4 + + + + + + + Temperature 1 + + + T1 + + + + + + + Temperature 2 + + + T2 + + + + + + + RPM + + + + + + + FUEL + + + + + + + When enabled, sends any non-blank values as simulated telemetry data. + + + simulate + + + + + + <html><head/><body><p>Start with <span style=" font-style:italic;">0x</span> for hex, <span style=" font-style:italic;">0</span> for octal, otherwise decimal.<br/>Numeric entry only. Blank values are not sent.</p></body></html> + + + + + Simulate + Rssi + Swr + From 2e65466184e7d12a082fccbd333ba755fc733736 Mon Sep 17 00:00:00 2001 From: maxpaperno Date: Sat, 28 Mar 2015 10:23:22 -0400 Subject: [PATCH 085/100] Fix missing ifdef. --- companion/src/simulation/telemetrysimu.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/companion/src/simulation/telemetrysimu.cpp b/companion/src/simulation/telemetrysimu.cpp index c576a8b1f..e435fe634 100644 --- a/companion/src/simulation/telemetrysimu.cpp +++ b/companion/src/simulation/telemetrysimu.cpp @@ -72,7 +72,9 @@ void TelemetrySimulator::generateTelemetryFrame() break; case 1: +#if defined(XJT_VERSION_ID) generateSportPacket(buffer, 1, DATA_FRAME, XJT_VERSION_ID, 11); +#endif break; case 2: From b3d48bab493270a5adececce75e5d70bcb33e13e Mon Sep 17 00:00:00 2001 From: Denis Kisselev Date: Sat, 28 Mar 2015 13:59:00 -0700 Subject: [PATCH 086/100] Clean up trim switch labels across platforms and languages --- radio/src/translations/cz.h.txt | 2 +- radio/src/translations/de.h.txt | 6 +++--- radio/src/translations/en.h.txt | 2 +- radio/src/translations/es.h.txt | 2 +- radio/src/translations/fi.h.txt | 2 +- radio/src/translations/fr.h.txt | 2 +- radio/src/translations/it.h.txt | 18 +++++++++--------- radio/src/translations/pl.h.txt | 2 +- radio/src/translations/pt.h.txt | 16 ++++++++-------- radio/src/translations/se.h.txt | 16 ++++++++-------- 10 files changed, 34 insertions(+), 34 deletions(-) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index a15eb24a3..f7820f99a 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -466,7 +466,7 @@ #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "\313Sl""\313Sp""\313Vd""\313Vn""\313Pd""\313Pn""\313Kl""\313Kp" +#define TR_TRIMS_SWITCHES TR("tSl""tSp""tVd""tVn""tPd""tPn""tKl""tKp", "\313Sl""\313Sp""\313Vd""\313Vn""\313Pd""\313Pn""\313Kl""\313Kp") #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "REa\0" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index cd7fce3ef..d491e89af 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -465,7 +465,7 @@ #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "\313Sl""\313Sr""\313Hd""\313Hu""\313Gd""\313Gu""\313Ql""\313Qr" +#define TR_TRIMS_SWITCHES TR("tSl""tSr""tHd""tHu""tGd""tGu""tQl""tQr", "\313Sl""\313Sr""\313Hd""\313Hu""\313Gd""\313Gu""\313Ql""\313Qr") #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "DGa\0" @@ -681,8 +681,8 @@ #define TR_SWITCHWARNING TR("Sch. Alarm", INDENT "Schalter-Alarm") #define TR_POTWARNING TR("Pot Warn.", INDENT "Poti-Warnung") #define TR_TIMEZONE TR("Zeitzone", "GPS-Zeitzone +/-Std") -#define TR_ADJUST_RTC INDENT "Adjust RTC" -#define TR_GPS "GPS" +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD TR("Kanalanordnung", "Kanalvoreinstellung") #define TR_STICKS "Knüppel" #define TR_POTS "Potis" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 5a228bfcd..afd34f1fa 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -465,7 +465,7 @@ #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar" +#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar") #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "REa\0" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 19920dab0..c255c414b 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -446,7 +446,7 @@ #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr" +#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar") #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "REa\0" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 3014a6201..f51ac152d 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -446,7 +446,7 @@ #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr" +#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313\313d""\313\313u""\313Al""\313Ar") #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "REa\0" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index b93defc44..5efc32dc9 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -465,7 +465,7 @@ #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "\313Dg""\313Dd""\313Pb""\313Ph""\313Gb""\313Gh""\313Ag""\313Ad" +#define TR_TRIMS_SWITCHES TR("tDg""tDd""tPb""tPh""tGb""tGh""tAg""tAd", "\313Dg""\313Dd""\313Pb""\313Ph""\313Gb""\313Gh""\313Ag""\313Ad") #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "REa\0" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index ebb8d4feb..01e72186e 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -446,7 +446,7 @@ #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr" +#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313\313d""\313\313u""\313Al""\313Ar") #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "REa\0" @@ -557,11 +557,11 @@ #define TR_ELIMITS TR("Limiti.E","Limiti Estesi") #define TR_ETRIMS TR("Trim Ext","Trim Estesi") #define TR_TRIMINC "Passo Trim" -#define TR_DISPLAY_TRIMS "Display Trims" +#define TR_DISPLAY_TRIMS "Display Trims" #define TR_TTRACE TR("T-Source", INDENT "Sorgente Motore") #define TR_TTRIM TR("T-Trim", INDENT "Trim Motore") #define TR_BEEPCTR TR("Ctr Beep","Beep al centro") -#define TR_USE_GLOBAL_FUNCS "Use Global Funcs" +#define TR_USE_GLOBAL_FUNCS "Use Global Funcs" #define TR_PROTO TR(INDENT "Proto", INDENT "Protocollo") #define TR_PPMFRAME TR("PPM frame", INDENT "PPM frame") #define TR_MS "ms" @@ -575,7 +575,7 @@ #define TR_SWASHTYPE "Tipo Ciclico" #define TR_COLLECTIVE TR("Collettivo","Origine Collettivo") #define TR_AILERON "Lateral cyc. source" -#define TR_ELEVATOR "Long. cyc. source" +#define TR_ELEVATOR "Long. cyc. source" #define TR_SWASHRING "Anello Ciclico" #define TR_ELEDIRECTION TR("Direzione ELE","Direzione Long. cyc.") #define TR_AILDIRECTION TR("Direzione AIL","Direzione Lateral cyc.") @@ -643,12 +643,12 @@ #define TR_SWITCHWARNING TR("Avv. Int.", INDENT "Avviso Interr.") #define TR_POTWARNING TR("Avv. Pot.", INDENT "Avviso Pot.") #define TR_TIMEZONE "Ora locale" -#define TR_ADJUST_RTC INDENT "Adjust RTC" -#define TR_GPS "GPS" +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD "Ordine ch RX" -#define TR_STICKS "Sticks" -#define TR_POTS "Pots" -#define TR_SWITCHES "Switches" +#define TR_STICKS "Sticks" +#define TR_POTS "Pots" +#define TR_SWITCHES "Switches" #define TR_SWITCHES_DELAY "Ritardo voce FV" #define TR_SLAVE "Allievo" #define TR_MODESRC "Modo\006% Origine" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 812562dd3..48c002d0e 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -444,7 +444,7 @@ #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr" +#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar") #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "REa\0" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index f5351722b..8adcfc078 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -446,7 +446,7 @@ #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr" +#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313\313d""\313\313u""\313Al""\313Ar") #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "REa\0" @@ -557,11 +557,11 @@ #define TR_ELIMITS "E.Limits" #define TR_ETRIMS "E.Trims" #define TR_TRIMINC "Trim Step" -#define TR_DISPLAY_TRIMS "Display Trims" +#define TR_DISPLAY_TRIMS "Display Trims" #define TR_TTRACE TR("T-Trace", INDENT "T-Trace") #define TR_TTRIM TR("T-Trim", INDENT "T-Trim") #define TR_BEEPCTR "Ctr Beep" -#define TR_USE_GLOBAL_FUNCS "Use Global Funcs" +#define TR_USE_GLOBAL_FUNCS "Use Global Funcs" #define TR_PROTO INDENT"Proto" #define TR_PPMFRAME "PPM frame" #define TR_MS "ms" @@ -643,12 +643,12 @@ #define TR_SWITCHWARNING TR("Avisa Chav", INDENT "Avisa Chav") #define TR_POTWARNING TR("Pot Warn.", INDENT "Pot Warning") #define TR_TIMEZONE "Time Zone" -#define TR_ADJUST_RTC INDENT "Adjust RTC" -#define TR_GPS "GPS" +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD "Ordem Canal RX" -#define TR_STICKS "Sticks" -#define TR_POTS "Pots" -#define TR_SWITCHES "Switches" +#define TR_STICKS "Sticks" +#define TR_POTS "Pots" +#define TR_SWITCHES "Switches" #define TR_SWITCHES_DELAY "Switches Delay" #define TR_SLAVE "Escravo" #define TR_MODESRC "Modo\006% Fonte" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 41166261f..6a23fb61b 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -446,7 +446,7 @@ #define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12" #endif -#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr" +#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar") #if defined(PCBSKY9X) #define TR_ROTARY_ENCODERS "REa\0" @@ -557,11 +557,11 @@ #define TR_ELIMITS TR("Gränser++","Utökade Gränser") #define TR_ETRIMS TR("Trimmar++","Utökade Trimmar") #define TR_TRIMINC TR("Trimning","Trimökning") -#define TR_DISPLAY_TRIMS "Display Trims" +#define TR_DISPLAY_TRIMS "Display Trims" #define TR_TTRACE TR("Följ Gas", INDENT "Följ Gas") #define TR_TTRIM TR("Gastrim", INDENT "Gastrim") #define TR_BEEPCTR TR("Cent.pip", "Centerpip") -#define TR_USE_GLOBAL_FUNCS "Use Global Funcs" +#define TR_USE_GLOBAL_FUNCS "Use Global Funcs" #define TR_PROTO TR(INDENT "Proto", INDENT "Protokoll") #define TR_PPMFRAME TR(INDENT "PPM-paket", INDENT "PPM-paket") #define TR_MS "ms" @@ -643,12 +643,12 @@ #define TR_SWITCHWARNING TR("Bryt.varn.", INDENT "Brytarvarning") #define TR_POTWARNING TR("Rattvarn.", INDENT "Rattvarning") #define TR_TIMEZONE TR("Tidszon", "GPS Tidszon") -#define TR_ADJUST_RTC INDENT "Adjust RTC" -#define TR_GPS "GPS" +#define TR_ADJUST_RTC INDENT "Adjust RTC" +#define TR_GPS "GPS" #define TR_RXCHANNELORD "Kanaler i RX" -#define TR_STICKS "Sticks" -#define TR_POTS "Pots" -#define TR_SWITCHES "Switches" +#define TR_STICKS "Sticks" +#define TR_POTS "Pots" +#define TR_SWITCHES "Switches" #define TR_SWITCHES_DELAY "Brytarfördröjning" #define TR_SLAVE "Elev" #define TR_MODESRC " Läge\004% Källa" From 4e6bc9db2f5e8da68ba127e038761f40eca41594 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 30 Mar 2015 00:18:26 +0200 Subject: [PATCH 087/100] [ARM boards] Haptic was broken on 'next' --- radio/src/audio_arm.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 52e97764b..0308ea8a1 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -974,6 +974,12 @@ void audioEvent(unsigned int index, unsigned int freq) if (index == AU_NONE) return; +#if defined(HAPTIC) + if (index >= AU_THROTTLE_ALERT) { + haptic.event(index); //do this before audio to help sync timings + } +#endif + if (index <= AU_ERROR || (index >= AU_WARNING1 && index < AU_FRSKY_FIRST)) { if (g_eeGeneral.alarmsFlash) { flashCounter = FLASH_DURATION; From fb7629530f322935d43bfc1693ac0188562c83ab Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Mon, 30 Mar 2015 11:00:56 +0400 Subject: [PATCH 088/100] Leftover files when uninstalling --- companion/targets/windows/companion-msys.nsi.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/companion/targets/windows/companion-msys.nsi.in b/companion/targets/windows/companion-msys.nsi.in index 88434ac76..dbb9ad683 100644 --- a/companion/targets/windows/companion-msys.nsi.in +++ b/companion/targets/windows/companion-msys.nsi.in @@ -173,8 +173,10 @@ Section "Uninstall" Delete "$INSTDIR\Uninstall.exe" Delete "$INSTDIR\lang\*.*" + Delete "$INSTDIR\phonon_backend\*.*" RMDir "$INSTDIR\lang" + RMDir "$INSTDIR\phonon_backend" RMDir "$INSTDIR" ${unregisterExtension} ".bin" "BIN File" From 37ed48528225f06697ad0d69fb3ee3aa74edf666 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Mon, 30 Mar 2015 13:29:45 +0400 Subject: [PATCH 089/100] Bad copy /paste in uninstaller section --- companion/targets/windows/companion-vs.nsi.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/targets/windows/companion-vs.nsi.in b/companion/targets/windows/companion-vs.nsi.in index 5da4e2a71..cd6b1eb8a 100644 --- a/companion/targets/windows/companion-vs.nsi.in +++ b/companion/targets/windows/companion-vs.nsi.in @@ -152,7 +152,7 @@ Section "OpenTX Companion" SecDummy WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayIcon" "$\"$INSTDIR\companion.exe$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "Publisher" "OpenTX" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "URLInfoAbout" "http://www.open-tx.org" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ImageMaker" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application From aa2542f9c0c0fc18a6724bcf1adc723042897e2c Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Mon, 30 Mar 2015 14:11:21 +0400 Subject: [PATCH 090/100] Separate major companion versions - 2.1 part, copy settings the most recent prior installation found and store them separately, and install in OpenTX\Companion 2.1 to allow running both versions --- companion/src/appdata.cpp | 70 ++++++++++++++----- companion/src/appdata.h | 4 +- companion/targets/windows/companion-vs.nsi.in | 42 +++++------ 3 files changed, 75 insertions(+), 41 deletions(-) diff --git a/companion/src/appdata.cpp b/companion/src/appdata.cpp index 6874cfbe3..395dd68be 100644 --- a/companion/src/appdata.cpp +++ b/companion/src/appdata.cpp @@ -20,7 +20,7 @@ AppData g; // ** CompStoreObj class******************** void CompStoreObj::clear (const QString tag1, const QString tag2, const QString tag3) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (tag2.isEmpty()) { settings.remove(tag1); @@ -43,7 +43,7 @@ void CompStoreObj::clear (const QString tag1, const QString tag2, const QString void CompStoreObj::store(const QByteArray newArray, QByteArray &array, const QString tag, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (!group1.isEmpty()) settings.beginGroup(group1); if (!group2.isEmpty()) settings.beginGroup(group2); @@ -56,7 +56,7 @@ void CompStoreObj::store(const QByteArray newArray, QByteArray &array, const QSt void CompStoreObj::store(const QStringList newSList, QStringList &stringList, const QString tag, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (!group1.isEmpty()) settings.beginGroup(group1); if (!group2.isEmpty()) settings.beginGroup(group2); @@ -69,7 +69,7 @@ void CompStoreObj::store(const QStringList newSList, QStringList &stringList, co void CompStoreObj::store(const QString newString, QString &string, const QString tag, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (!group1.isEmpty()) settings.beginGroup(group1); if (!group2.isEmpty()) settings.beginGroup(group2); @@ -82,7 +82,7 @@ void CompStoreObj::store(const QString newString, QString &string, const QString void CompStoreObj::store(const bool newTruth, bool &truth, const QString tag, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (!group1.isEmpty()) settings.beginGroup(group1); if (!group2.isEmpty()) settings.beginGroup(group2); @@ -95,7 +95,7 @@ void CompStoreObj::store(const bool newTruth, bool &truth, const QString tag, co void CompStoreObj::store(const int newNumber, int &number, const QString tag, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (!group1.isEmpty()) settings.beginGroup(group1); if (!group2.isEmpty()) settings.beginGroup(group2); @@ -109,7 +109,7 @@ void CompStoreObj::store(const int newNumber, int &number, const QString tag, co // Retrieval functions void CompStoreObj::retrieve( QByteArray &array, const QString tag, const QString def, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (!group1.isEmpty()) settings.beginGroup(group1); if (!group2.isEmpty()) settings.beginGroup(group2); @@ -121,7 +121,7 @@ void CompStoreObj::retrieve( QByteArray &array, const QString tag, const QString void CompStoreObj::retrieve( QStringList &stringList, const QString tag, const QString def, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (!group1.isEmpty()) settings.beginGroup(group1); if (!group2.isEmpty()) settings.beginGroup(group2); @@ -133,7 +133,7 @@ void CompStoreObj::retrieve( QStringList &stringList, const QString tag, const Q void CompStoreObj::retrieve( QString &string, const QString tag, const QString def, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (!group1.isEmpty()) settings.beginGroup(group1); if (!group2.isEmpty()) settings.beginGroup(group2); @@ -145,7 +145,7 @@ void CompStoreObj::retrieve( QString &string, const QString tag, const QString d void CompStoreObj::retrieve( bool &truth, const QString tag, const bool def, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (!group1.isEmpty()) settings.beginGroup(group1); if (!group2.isEmpty()) settings.beginGroup(group2); @@ -157,7 +157,7 @@ void CompStoreObj::retrieve( bool &truth, const QString tag, const bool def, con void CompStoreObj::retrieve( int &number, const QString tag, const int def, const QString group1, const QString group2 ) { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); if (!group1.isEmpty()) settings.beginGroup(group1); if (!group2.isEmpty()) settings.beginGroup(group2); @@ -241,7 +241,7 @@ JStickData::JStickData() void JStickData::remove() { // Remove all JStickData values from settings file - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); settings.beginGroup( "JsCalibration" ); settings.remove( QString( "stick%1_axe").arg(index) ); settings.remove( QString( "stick%1_min").arg(index) ); @@ -256,7 +256,7 @@ void JStickData::remove() bool JStickData::existsOnDisk() { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); settings.beginGroup("JsCalibration"); int axe = settings.value( QString("stick%1_axe").arg(index), -1 ).toInt(); settings.endGroup(); @@ -377,7 +377,7 @@ Profile& Profile::operator=(const Profile& rhs) void Profile::remove() { // Remove all profile values from settings file - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); settings.beginGroup("Profiles"); settings.remove(QString("profile%1").arg(index)); settings.endGroup(); @@ -388,7 +388,7 @@ void Profile::remove() bool Profile::existsOnDisk() { - QSettings settings(PRODUCT, COMPANY); + QSettings settings(COMPANY, PRODUCT); settings.beginGroup("Profiles"); settings.beginGroup(QString("profile%1").arg(index)); QStringList keyList = settings.allKeys(); @@ -577,11 +577,43 @@ AppData::AppData() for (int i=0; i #include -#define COMPANY "OpenTX Companion" -#define PRODUCT "OpenTX" +#define COMPANY "OpenTX" +#define PRODUCT "Companion 2.1" #define MAX_PROFILES 15 #define MAX_JOYSTICKS 8 diff --git a/companion/targets/windows/companion-vs.nsi.in b/companion/targets/windows/companion-vs.nsi.in index cd6b1eb8a..00e732d42 100644 --- a/companion/targets/windows/companion-vs.nsi.in +++ b/companion/targets/windows/companion-vs.nsi.in @@ -12,14 +12,14 @@ ;General ;Name and file - Name "OpenTX Companion" + Name "OpenTX Companion 2.1" OutFile "companionInstall_@C9X_VERSION@.exe" ;Default installation folder - InstallDir "$PROGRAMFILES\OpenTX" + InstallDir "$PROGRAMFILES\OpenTX\Companion 2.1" ;Get installation folder from registry if available - InstallDirRegKey HKCU "Software\OpenTX" "" + InstallDirRegKey HKCU "Software\OpenTX\Companion 2.1" "" ;Compressor options SetCompressor /FINAL /SOLID lzma @@ -66,7 +66,7 @@ ;Start Menu Folder Page Configuration !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" - !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\OpenTX" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\OpenTX\Companion 2.1" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder @@ -77,7 +77,7 @@ !define MUI_FINISHPAGE_NOAUTOCLOSE !define MUI_FINISHPAGE_RUN !define MUI_FINISHPAGE_RUN_CHECKED - !define MUI_FINISHPAGE_RUN_TEXT "Launch OpenTX Companion" + !define MUI_FINISHPAGE_RUN_TEXT "Launch OpenTX Companion 2.1" !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink" # !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED # !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\readme.txt @@ -134,7 +134,7 @@ Section "OpenTX Companion" SecDummy SetOutPath "$INSTDIR" ;Store installation folder - WriteRegStr HKCU "Software\OpenTX" "" $INSTDIR + WriteRegStr HKCU "Software\OpenTX\Companion 2.1" "" $INSTDIR ;Associate with extentions ,bin and .hex ${registerExtension} "$INSTDIR\companion.exe" ".bin" "BIN_File" @@ -147,20 +147,20 @@ Section "OpenTX Companion" SecDummy WriteUninstaller "$INSTDIR\Uninstall.exe" ;Registry information for add/remove programs - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayName" "OpenTX Companion" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\"" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayIcon" "$\"$INSTDIR\companion.exe$\"" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "Publisher" "OpenTX" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "URLInfoAbout" "http://www.open-tx.org" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "DisplayName" "OpenTX Companion 2.1" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "DisplayIcon" "$\"$INSTDIR\companion.exe$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "Publisher" "OpenTX" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "URLInfoAbout" "http://www.open-tx.org" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application ;Create shortcuts CreateDirectory "$SMPROGRAMS\$StartMenuFolder" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\companion.lnk" "$INSTDIR\companion.exe" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\simulator.lnk" "$INSTDIR\simulator.exe" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Companion 2.1.lnk" "$INSTDIR\companion.exe" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Firmware Simulator 2.1.lnk" "$INSTDIR\simulator.exe" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion 2.1.lnk" "$INSTDIR\Uninstall.exe" !insertmacro MUI_STARTMENU_WRITE_END @@ -207,8 +207,10 @@ Section "Uninstall" Delete "$INSTDIR\Uninstall.exe" Delete "$INSTDIR\lang\*.*" + Delete "$INSTDIR\phonon_backend\*.*" RMDir "$INSTDIR\lang" + RMDir "$INSTDIR\phonon_backend" RMDir "$INSTDIR" ${unregisterExtension} ".bin" "BIN File" @@ -218,13 +220,13 @@ Section "Uninstall" !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder - Delete "$SMPROGRAMS\$StartMenuFolder\companion.lnk" - Delete "$SMPROGRAMS\$StartMenuFolder\simulator.lnk" - Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Companion 2.1.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Firmware Simulator 2.1.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion 2.1.lnk" RMDir "$SMPROGRAMS\$StartMenuFolder" - DeleteRegKey /ifempty HKCU "Software\OpenTX" - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" + DeleteRegKey /ifempty HKCU "Software\OpenTX Companion 2.1" + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" SectionEnd From 9a12963da992307070541c6fbe69f019e50a2ea3 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Mon, 30 Mar 2015 14:18:35 +0400 Subject: [PATCH 091/100] Make version more obvious --- companion/src/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 56387f25e..c26a81ff4 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -922,7 +922,7 @@ void MainWindow::updateMenus() updateLanguageActions(); updateIconSizeActions(); updateIconThemeActions(); - setWindowTitle(tr("OpenTX Companion - FW: %1 - Profile: %2").arg(GetCurrentFirmware()->getName()).arg( g.profile[g.id()].name() )); + setWindowTitle(tr("OpenTX Companion 2.1 - FW: %1 - Profile: %2").arg(GetCurrentFirmware()->getName()).arg( g.profile[g.id()].name() )); } MdiChild *MainWindow::createMdiChild() From 459837d6f36502ca97cf44e057304f3779eb92d1 Mon Sep 17 00:00:00 2001 From: Jim Date: Mon, 30 Mar 2015 11:24:38 -0400 Subject: [PATCH 092/100] Fix for Issue 2090 on next --- companion/src/modeledit/customfunctions.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 600278d73..76aea0805 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -264,6 +264,7 @@ void CustomFunctionsPanel::playMusic() phononCurrent = -1; } else { + playBT[phononCurrent]->setIcon(CompanionIcon("play.png")); phononCurrent = index; clickObject->clear(); #ifdef __APPLE__ From fe71712b1807940358e7fbfe448056574a37d41b Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 30 Mar 2015 21:37:30 +0200 Subject: [PATCH 093/100] [Taranis] Trainer inputs were not working in mixers --- radio/src/mixer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index de63bbc32..44377a898 100644 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -653,7 +653,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) if (md->srcRaw == 0) break; - uint8_t stickIndex = md->srcRaw - MIXSRC_Rud; + mixsrc_t stickIndex = md->srcRaw - MIXSRC_Rud; if (!(dirtyChannels & ((bitfield_channels_t)1 << md->destCh))) continue; @@ -709,10 +709,10 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) else #endif { - int8_t srcRaw = MIXSRC_Rud + stickIndex; + mixsrc_t srcRaw = MIXSRC_Rud + stickIndex; v = getValue(srcRaw); srcRaw -= MIXSRC_CH1; - if (srcRaw>=0 && srcRaw<=MIXSRC_LAST_CH-MIXSRC_CH1 && md->destCh != srcRaw) { + if (srcRaw<=MIXSRC_LAST_CH-MIXSRC_CH1 && md->destCh != srcRaw) { if (dirtyChannels & ((bitfield_channels_t)1 << srcRaw) & (passDirtyChannels|~(((bitfield_channels_t) 1 << md->destCh)-1))) passDirtyChannels |= (bitfield_channels_t) 1 << md->destCh; if (srcRaw < md->destCh || pass > 0) From 70f84b5dad3665c778dc5d0f647990f2cf0c49a8 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 30 Mar 2015 22:38:08 +0200 Subject: [PATCH 094/100] [Taranis Plus] Amber backlight was broken --- radio/src/targets/taranis/hal.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index e5f1b2129..977f00eb5 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -301,7 +301,7 @@ #endif // LCD -#if defined(REVPLUS) +#if defined(REV9E) #define RCC_AHB1Periph_LCD (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD) #define RCC_AHB1Periph_LCD_RST RCC_AHB1Periph_GPIOD #define RCC_AHB1Periph_LCD_NCS RCC_AHB1Periph_GPIOA @@ -312,7 +312,19 @@ #define PIN_LCD_CLK GPIO_Pin_10 // PC.10 #define PIN_LCD_NCS GPIO_Pin_15 // PA.15 #define PIN_LCD_A0 GPIO_Pin_11 // PC.11 - #define PIN_LCD_RST GPIO_Pin_15 // TOTO PD.12 + #define PIN_LCD_RST GPIO_Pin_15 // PD.15 +#elif defined(REVPLUS) + #define RCC_AHB1Periph_LCD (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD) + #define RCC_AHB1Periph_LCD_RST RCC_AHB1Periph_GPIOD + #define RCC_AHB1Periph_LCD_NCS RCC_AHB1Periph_GPIOA + #define GPIO_LCD_SPI GPIOC + #define GPIO_LCD_NCS GPIOA + #define GPIO_LCD_RST GPIOD + #define PIN_LCD_MOSI GPIO_Pin_12 // PC.12 + #define PIN_LCD_CLK GPIO_Pin_10 // PC.10 + #define PIN_LCD_NCS GPIO_Pin_15 // PA.15 + #define PIN_LCD_A0 GPIO_Pin_11 // PC.11 + #define PIN_LCD_RST GPIO_Pin_12 // PD.12 #else #define RCC_AHB1Periph_LCD RCC_AHB1Periph_GPIOD #define GPIO_LCD_SPI GPIOD From 80c5c2f5f774213064dbcce79ca446e8b008f66a Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 30 Mar 2015 23:09:55 +0200 Subject: [PATCH 095/100] [Companion] Hide items in Switches Lists rather than disable them --- companion/src/helpers.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index f52aa506d..4640f298f 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -413,12 +413,10 @@ void populateSwitchCB(QComboBox *b, const RawSwitch & value, const GeneralSettin for (int i=-GetCurrentFirmware()->getCapability(SwitchesPositions); i<0; i++) { item = RawSwitch(SWITCH_TYPE_SWITCH, i); - b->addItem(item.toString(), item.toValue()); if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchPositionAllowedTaranis(i)){ - QModelIndex index = b->model()->index(b->count()-1, 0); - QVariant v(0); - b->model()->setData(index, v, Qt::UserRole - 1); + continue; } + b->addItem(item.toString(), item.toValue()); if (item == value) b->setCurrentIndex(b->count()-1); } @@ -437,12 +435,10 @@ void populateSwitchCB(QComboBox *b, const RawSwitch & value, const GeneralSettin for (int i=1; i<=GetCurrentFirmware()->getCapability(SwitchesPositions); i++) { item = RawSwitch(SWITCH_TYPE_SWITCH, i); - b->addItem(item.toString(), item.toValue()); if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchPositionAllowedTaranis(i)){ - QModelIndex index = b->model()->index(b->count()-1, 0); - QVariant v(0); - b->model()->setData(index, v, Qt::UserRole - 1); + continue; } + b->addItem(item.toString(), item.toValue()); if (item == value) b->setCurrentIndex(b->count()-1); } From 4a9aa52f28580bc1df9447eba498b23f1b0d4714 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 31 Mar 2015 07:53:43 +0200 Subject: [PATCH 096/100] One less configure_pins, still a lot to remove :) --- radio/src/targets/taranis/board_taranis.h | 26 +++++++++++++++----- radio/src/targets/taranis/configure_pins.cpp | 4 --- radio/src/targets/taranis/hal.h | 17 ------------- radio/src/targets/taranis/lcd_driver.cpp | 8 +++--- radio/src/targets/taranis/pulses_driver.cpp | 4 +-- radio/src/targets/taranis/trainer_driver.cpp | 20 ++++++++++++--- 6 files changed, 42 insertions(+), 37 deletions(-) diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index 1bb56b1d0..10d2165b3 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -110,16 +110,30 @@ extern "C" { #define PIN_OUTPUT 0x0001 #define PIN_PERIPHERAL 0x0002 #define PIN_ANALOG 0x0003 + #define PIN_PULL_MASK 0x000C #define PIN_PULLUP 0x0004 -#define PIN_NO_PULLUP 0x0000 -#define PIN_PULLDOWN 0x0008 -#define PIN_NO_PULLDOWN 0x0000 -#define PIN_PERI_MASK 0x00F0 -#define PIN_PUSHPULL 0x0000 -#define PIN_ODRAIN 0x8000 + #define PIN_PORT_MASK 0x0700 +#define PIN_PORTA 0x0000 +#define PIN_PORTB 0x0100 +#define PIN_PORTC 0x0200 +#define PIN_PORTD 0x0300 +#define PIN_PORTE 0x0400 +#define PIN_PORTF 0x0500 + +#define PIN_PERI_MASK 0x00F0 +#define PIN_PER_1 0x0010 +#define PIN_PER_2 0x0020 +#define PIN_PER_3 0x0030 +#define PIN_PER_5 0x0050 +#define PIN_PER_6 0x0060 +#define PIN_PER_8 0x0080 + #define PIN_SPEED_MASK 0x6000 +#define PIN_OS25 0x2000 +#define PIN_OS50 0x4000 +#define PIN_OS100 0x6000 void configure_pins( uint32_t pins, uint16_t config ); diff --git a/radio/src/targets/taranis/configure_pins.cpp b/radio/src/targets/taranis/configure_pins.cpp index 9d0824116..422c52a0f 100644 --- a/radio/src/targets/taranis/configure_pins.cpp +++ b/radio/src/targets/taranis/configure_pins.cpp @@ -65,10 +65,6 @@ void configure_pins( uint32_t pins, uint16_t config ) /* Output mode configuration*/ pgpio->OTYPER &= ~((GPIO_OTYPER_OT_0) << ((uint16_t)pos)) ; - if ( config & PIN_ODRAIN ) - { - pgpio->OTYPER |= (GPIO_OTYPER_OT_0) << pos ; - } } /* Pull-up Pull down resistor configuration*/ pgpio->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << ((uint16_t)pos * 2)); diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 977f00eb5..605201d32 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -210,23 +210,6 @@ #define GPIOTRNDET GPIOA #define PIN_TRNDET GPIO_Pin_8 -#define PIN_PORTA 0x0000 -#define PIN_PORTB 0x0100 -#define PIN_PORTC 0x0200 -#define PIN_PORTD 0x0300 -#define PIN_PORTE 0x0400 -#define PIN_PORTF 0x0500 -#define PIN_PER_1 0x0010 -#define PIN_PER_2 0x0020 -#define PIN_PER_3 0x0030 -#define PIN_PER_5 0x0050 -#define PIN_PER_6 0x0060 -#define PIN_PER_8 0x0080 -// #define PIN_OS2 0x0000 -#define PIN_OS25 0x2000 -#define PIN_OS50 0x4000 -#define PIN_OS100 0x6000 - // Cppm #define RCC_AHB1Periph_GPIO_INTPPM RCC_AHB1Periph_GPIOA #define PIN_INTPPM_OUT GPIO_Pin_10 // PA.10 diff --git a/radio/src/targets/taranis/lcd_driver.cpp b/radio/src/targets/taranis/lcd_driver.cpp index 8aa8da39a..45c755820 100644 --- a/radio/src/targets/taranis/lcd_driver.cpp +++ b/radio/src/targets/taranis/lcd_driver.cpp @@ -55,10 +55,10 @@ void initLcdSpi() SPI3->CR1 |= SPI_CR1_MSTR ; // Make sure in case SSM/SSI needed to be set first SPI3->CR1 |= SPI_CR1_SPE ; - configure_pins( PIN_LCD_NCS, PIN_OUTPUT | PIN_PORTA | PIN_PUSHPULL | PIN_OS25 | PIN_NO_PULLUP ) ; - configure_pins( PIN_LCD_RST, PIN_OUTPUT | PIN_PORTD | PIN_PUSHPULL | PIN_OS25 | PIN_NO_PULLUP ) ; - configure_pins( PIN_LCD_A0, PIN_OUTPUT | PIN_PORTC | PIN_PUSHPULL | PIN_OS50 | PIN_NO_PULLUP ) ; - configure_pins( PIN_LCD_MOSI|PIN_LCD_CLK, PIN_PORTC | PIN_PUSHPULL | PIN_OS50 | PIN_NO_PULLUP | PIN_PER_6 | PIN_PERIPHERAL ) ; + configure_pins( PIN_LCD_NCS, PIN_OUTPUT | PIN_PORTA | PIN_OS25) ; + configure_pins( PIN_LCD_RST, PIN_OUTPUT | PIN_PORTD | PIN_OS25) ; + configure_pins( PIN_LCD_A0, PIN_OUTPUT | PIN_PORTC | PIN_OS50) ; + configure_pins( PIN_LCD_MOSI|PIN_LCD_CLK, PIN_PORTC | PIN_OS50 | PIN_PER_6 | PIN_PERIPHERAL ) ; // NVIC_SetPriority( DMA1_Stream7_IRQn, 8 ) ; diff --git a/radio/src/targets/taranis/pulses_driver.cpp b/radio/src/targets/taranis/pulses_driver.cpp index 7a463c0f3..eab5f1a6b 100644 --- a/radio/src/targets/taranis/pulses_driver.cpp +++ b/radio/src/targets/taranis/pulses_driver.cpp @@ -323,7 +323,7 @@ static void init_pa10_ppm() //RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; // Enable portA clock RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIO_INTPPM, ENABLE); - configure_pins( PIN_INTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_1 | PIN_OS25 | PIN_PUSHPULL ) ; + configure_pins( PIN_INTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_1 | PIN_OS25) ; RCC->APB2ENR |= RCC_APB2ENR_TIM1EN ; // Enable clock TIM1->CR1 &= ~TIM_CR1_CEN ; @@ -553,7 +553,7 @@ static void init_pa7_ppm() ppmStreamPtr[EXTERNAL_MODULE] = ppmStream[EXTERNAL_MODULE]; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; // Enable portA clock - configure_pins( PIN_EXTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_3 | PIN_OS25 | PIN_PUSHPULL ) ; + configure_pins( PIN_EXTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_3 | PIN_OS25) ; RCC->APB2ENR |= RCC_APB2ENR_TIM8EN ; // Enable clock TIM8->CR1 &= ~TIM_CR1_CEN ; diff --git a/radio/src/targets/taranis/trainer_driver.cpp b/radio/src/targets/taranis/trainer_driver.cpp index 391a9c840..deac22b1f 100644 --- a/radio/src/targets/taranis/trainer_driver.cpp +++ b/radio/src/targets/taranis/trainer_driver.cpp @@ -48,7 +48,7 @@ void init_trainer_ppm() TrainerPulsePtr = ppmStream[TRAINER_MODULE]; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN ; // Enable portC clock - configure_pins( PIN_TR_PPM_OUT, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2 | PIN_OS25 | PIN_PUSHPULL ) ; + configure_pins( PIN_TR_PPM_OUT, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2 | PIN_OS25) ; configure_pins( PIN_TR_PPM_IN, PIN_PORTA | PIN_INPUT ) ; RCC->APB1ENR |= RCC_APB1ENR_TIM3EN ; // Enable clock TIM3->CR1 &= ~TIM_CR1_CEN ; @@ -92,10 +92,22 @@ void set_trainer_ppm_parameters(uint32_t idleTime, uint32_t delay, uint32_t posi // Trainer capture, PC8, Timer 3 channel 3 void init_trainer_capture() { - RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN ; // Enable portC clock - configure_pins (PIN_TR_PPM_IN, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2) ; - RCC->APB1ENR |= RCC_APB1ENR_TIM3EN ; // Enable clock + GPIO_InitTypeDef GPIO_InitStructure; + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); +#if 0 + configure_pins (PIN_TR_PPM_IN, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2) ; +#else + GPIO_InitStructure.GPIO_Pin = PIN_TR_PPM_IN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; + GPIO_Init(GPIO_TR_INOUT, &GPIO_InitStructure); + GPIO_PinAFConfig(GPIO_TR_INOUT, GPIO_PinSource8, GPIO_AF_TIM3); +#endif + + RCC->APB1ENR |= RCC_APB1ENR_TIM3EN ; TIM3->ARR = 0xFFFF ; TIM3->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1 ; // 0.5uS TIM3->CR2 = 0 ; From 50fa9a4dfd3a8e52827602fdfff78753aa57279c Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Tue, 31 Mar 2015 16:14:37 +0400 Subject: [PATCH 097/100] [Companion] Telemetry sensor ratio/offset weren't imported --- companion/src/firmwares/opentx/opentxeeprom.cpp | 2 ++ companion/src/modeledit/telemetry.cpp | 2 +- companion/src/modeledit/telemetry.h | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index fb6eca8ca..7e1f67224 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2730,6 +2730,8 @@ class SensorField: public TransformedField { if (sensor.type == SensorData::TYPE_CUSTOM) { sensor.id = _id; sensor.instance = _instance; + sensor.ratio = _param & 0xFF; + sensor.offset = (_param >> 16) & 0xFF; } else { sensor.persistentValue = _id; diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 5eb2fb33f..9e77effa4 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -643,7 +643,7 @@ void TelemetrySensorPanel::on_unit_currentIndexChanged(int index) } } -void TelemetrySensorPanel::on_prec_editingFinished() +void TelemetrySensorPanel::on_prec_valueChanged() { if (!lock) { sensor.prec = ui->prec->value(); diff --git a/companion/src/modeledit/telemetry.h b/companion/src/modeledit/telemetry.h index 9be399456..c7f993e3f 100644 --- a/companion/src/modeledit/telemetry.h +++ b/companion/src/modeledit/telemetry.h @@ -95,7 +95,7 @@ class TelemetrySensorPanel: public ModelPanel void on_type_currentIndexChanged(int index); void on_formula_currentIndexChanged(int index); void on_unit_currentIndexChanged(int index); - void on_prec_editingFinished(); + void on_prec_valueChanged(); protected: void updateSourcesComboBox(AutoComboBox * cb, bool negative); From 4110de0e645e45096a05984c7c2dbfdc4eb87b3b Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Tue, 31 Mar 2015 17:48:10 +0400 Subject: [PATCH 098/100] Fix shift on X9E --- companion/src/firmwares/opentx/opentxeeprom.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 7e1f67224..aba9061c6 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -3015,8 +3015,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne } if (IS_ARM(board) && version >= 217) { - int size = IS_TARANIS_X9E(board) ? 32 : 8; - for (int i=0; i(modelData.potsWarningEnabled[i])); else @@ -3277,7 +3276,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo internalField.Append(new SpareBitsField<64>()); else if (IS_TARANIS(board)) internalField.Append(new SpareBitsField<16>()); - + if (version >= 217) { for (int i=0; i Date: Tue, 31 Mar 2015 17:49:43 +0400 Subject: [PATCH 099/100] Add multiplier to RPM sensor (Fix #1688), fix offset/ratio DSBs --- companion/src/modeledit/telemetry.cpp | 21 ++++++++++++-- companion/src/modeledit/telemetry_sensor.ui | 29 +++++++++++++++---- .../src/gui/Taranis/menu_model_telemetry.cpp | 10 +++++-- radio/src/telemetry/frsky_sport.cpp | 1 + radio/src/telemetry/telemetry.cpp | 2 +- 5 files changed, 51 insertions(+), 12 deletions(-) diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 9e77effa4..d90196f5e 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -558,13 +558,28 @@ void TelemetrySensorPanel::update() ui->instance->show(); ui->formula->hide(); ratioFieldsDisplayed = (sensor.unit != SensorData::UNIT_GPS && sensor.unit != SensorData::UNIT_DATETIME); - ui->offset->setDecimals(sensor.prec); precDisplayed = (sensor.unit != SensorData::UNIT_GPS && sensor.unit != SensorData::UNIT_DATETIME); + ui->offset->setMaximum((sensor.prec > 0 ? sensor.prec == 2 ? 30000 : 3000 : 300)); + ui->offset->setMinimum((sensor.prec > 0 ? sensor.prec == 2 ? -30000 : -3000 : -300)); + + if (sensor.unit == SensorData::UNIT_RPMS) { + ui->offset->setDecimals(0); + ui->ratio->setDecimals(0); + ui->autoOffset->hide(); + ui->ratio->setMinimum(1); + ui->offset->setMinimum(1); + } + else { + ui->offset->setDecimals(sensor.prec); + ui->ratio->setDecimals(1); + } } - ui->ratioLabel->setVisible(ratioFieldsDisplayed); + ui->ratioLabel->setVisible(ratioFieldsDisplayed && sensor.unit != SensorData::UNIT_RPMS); + ui->bladesLabel->setVisible(sensor.unit == SensorData::UNIT_RPMS); ui->ratio->setVisible(ratioFieldsDisplayed); - ui->offsetLabel->setVisible(ratioFieldsDisplayed); + ui->offsetLabel->setVisible(ratioFieldsDisplayed && sensor.unit != SensorData::UNIT_RPMS); + ui->multiplierLabel->setVisible(sensor.unit == SensorData::UNIT_RPMS); ui->offset->setVisible(ratioFieldsDisplayed); ui->precLabel->setVisible(precDisplayed); ui->prec->setVisible(precDisplayed); diff --git a/companion/src/modeledit/telemetry_sensor.ui b/companion/src/modeledit/telemetry_sensor.ui index ce8fafaca..c00836fb7 100644 --- a/companion/src/modeledit/telemetry_sensor.ui +++ b/companion/src/modeledit/telemetry_sensor.ui @@ -13,7 +13,7 @@ Form - + 0 @@ -506,6 +506,13 @@ + + + + Blades + + + @@ -518,7 +525,10 @@ - 1 + 0 + + + 0.000000000000000 3000.000000000000000 @@ -538,6 +548,13 @@ + + + + Multiplier + + + @@ -547,16 +564,16 @@ - 2 + 0 - -12.800000000000001 + -30000.000000000000000 - 12.699999999999999 + 30000.000000000000000 - 0.100000000000000 + 1.000000000000000 diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 575404846..07e739183 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -205,10 +205,10 @@ bool isSensorAvailable(int sensor) #define SENSOR_UNIT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PREC_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PARAM1_ROWS (sensor->unit >= UNIT_FIRST_VIRTUAL ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && (sensor->formula==TELEM_FORMULA_CONSUMPTION || sensor->formula==TELEM_FORMULA_TOTALIZE)) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && (sensor->formula==TELEM_FORMULA_CONSUMPTION || sensor->formula==TELEM_FORMULA_TOTALIZE)) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW -#define SENSOR_AUTOOFFSET_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_AUTOOFFSET_ROWS (sensor->unit != UNIT_RPMS && sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_FILTER_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PERSISTENT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) @@ -377,6 +377,12 @@ void menuModelSensor(uint8_t event) break; } } + else if (sensor->unit == UNIT_RPMS) { + lcd_putsLeft(y, STR_MULTIPLIER); + if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.offset, 1, 30000); + lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.offset, LEFT|attr); + break; + } else { lcd_putsLeft(y, NO_INDENT(STR_OFFSET)); if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.offset, -30000, +30000); diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 848701106..076d0a4f4 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -259,6 +259,7 @@ void frskySportSetDefault(int index, uint16_t id, uint8_t instance) } if (unit == UNIT_RPMS) { telemetrySensor.custom.ratio = 1; + telemetrySensor.custom.offset = 1; } } else { diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 9b4933333..26f474803 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -172,7 +172,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32 newVal = 0; } else if (unit == UNIT_RPMS) { - newVal = newVal / sensor.custom.ratio; + newVal = (newVal * sensor.custom.offset) / sensor.custom.ratio; } else { newVal = sensor.getValue(newVal, unit, prec); From 82d11abb2e58416c57fb82a80c7c95203941133e Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Tue, 31 Mar 2015 19:21:11 +0400 Subject: [PATCH 100/100] Display trims problem (Fix #2157) --- radio/src/gui/Taranis/view_main.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/radio/src/gui/Taranis/view_main.cpp b/radio/src/gui/Taranis/view_main.cpp index 481e348dd..7fc20d9e2 100755 --- a/radio/src/gui/Taranis/view_main.cpp +++ b/radio/src/gui/Taranis/view_main.cpp @@ -117,7 +117,7 @@ void doMainScreenGraphics() void displayTrims(uint8_t phase) { - for (unsigned int i=0; i 0 && (trimsDisplayMask & (1<0 ? 25 : 57, xm-2, -abs(dir), TINSIZE|VERTICAL); + if (g_model.displayTrims != DISPLAY_TRIMS_NEVER && dir != 0) { + if (g_model.displayTrims == DISPLAY_TRIMS_ALWAYS || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<0 ? 22 : 54, xm-2, -abs(dir/5), TINSIZE|VERTICAL); } } } @@ -182,8 +182,8 @@ void displayTrims(uint8_t phase) lcd_vline(xm, ym-1, 3); } if (g_model.displayTrims != DISPLAY_TRIMS_NEVER && dir != 0) { - if (g_model.displayTrims == DISPLAY_TRIMS_ALWAYS || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<0 ? -9 : 22), ym-2, -abs(dir), TINSIZE); + if (g_model.displayTrims == DISPLAY_TRIMS_ALWAYS || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<0 ? -11 : 20), ym-2, -abs(dir/5), TINSIZE); } } }