diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index e7d99fc83..b0f154e13 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -914,10 +914,13 @@ class MavlinkData { void clear() { memset(this, 0, sizeof(MavlinkData)); } }; +#define TIMER_NAME_LEN 8 + class TimerData { public: TimerData() { clear(); } RawSwitch mode; + char name[TIMER_NAME_LEN+1]; bool minuteBeep; unsigned int countdownBeep; unsigned int val; @@ -1063,6 +1066,7 @@ enum Capability { Imperial, Mixes, Timers, + TimersName, TimeDivisions, CustomFunctions, SafetyChannelCustomFunction, diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 9affa8d83..248346f09 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2452,6 +2452,10 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne internalField.Append(new SpareBitsField<3>()); internalField.Append(new UnsignedField<24>(modelData.timers[i].val)); internalField.Append(new SignedField<24>(modelData.timers[i].pvalue)); + if (IS_TARANIS(board)) + internalField.Append(new ZCharField<8>(modelData.timers[i].name)); + else + internalField.Append(new ZCharField<3>(modelData.timers[i].name)); } else if ((IS_ARM(board) || IS_2560(board)) && version >= 216) { internalField.Append(new UnsignedField<16>(modelData.timers[i].val)); diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 4aa632b2c..2ab53e513 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -561,6 +561,8 @@ int OpenTxFirmware::getCapability(const Capability capability) return (IS_ARM(board) ? 500 : 245); case Timers: return (IS_ARM(board) ? 3 : 2); + case TimersName: + return (IS_TARANIS(board) ? 8 : (IS_ARM(board) ? 3 : 0)); case PermTimers: if (board == BOARD_GRUVIN9X || IS_ARM(board)) return 1; diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index dc785ffbf..51efe4643 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -10,10 +10,22 @@ TimerPanel::TimerPanel(QWidget *parent, ModelData & model, TimerData & timer, Ge timer(timer), ui(new Ui::Timer) { + BoardEnum board = firmware->getBoard(); + ui->setupUi(this); lock = true; + // Name + int length = firmware->getCapability(TimersName); + if (length == 0) { + ui->name->hide(); + } + else { + ui->name->setMaxLength(length); + ui->name->setText(timer.name); + } + // Mode populateSwitchCB(ui->mode, timer.mode, generalSettings, TimersContext); @@ -25,7 +37,7 @@ TimerPanel::TimerPanel(QWidget *parent, ModelData & model, TimerData & timer, Ge ui->countdownBeep->setField(&timer.countdownBeep, this); ui->countdownBeep->addItem(tr("Silent"), 0); ui->countdownBeep->addItem(tr("Beeps"), 1); - if (IS_ARM(GetEepromInterface()->getBoard()) || IS_2560(GetEepromInterface()->getBoard())) { + if (IS_ARM(board) || IS_2560(board)) { ui->countdownBeep->addItem(tr("Voice"), 2); } @@ -87,6 +99,13 @@ void TimerPanel::on_minuteBeep_toggled(bool checked) emit modified(); } +void TimerPanel::on_name_editingFinished() +{ + int length = ui->name->maxLength(); + strncpy(timer.name, ui->name->text().toAscii(), length); + emit modified(); +} + /******************************************************************************/ ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module, GeneralSettings & generalSettings, FirmwareInterface * firmware, int moduleIdx): @@ -336,13 +355,15 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::Setup) { + BoardEnum board = firmware->getBoard(); + lock = true; memset(modules, 0, sizeof(modules)); ui->setupUi(this); - ui->name->setMaxLength(IS_TARANIS(firmware->getBoard()) ? 12 : 10); + ui->name->setMaxLength(IS_TARANIS(board) ? 12 : 10); for (int i=0; igetCapability(Timers)) { @@ -428,7 +449,7 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen ui->centerBeepLayout->addWidget(checkbox, 0, i+1); connect(checkbox, SIGNAL(toggled(bool)), this, SLOT(onBeepCenterToggled(bool))); centerBeepCheckboxes << checkbox; - if (!IS_TARANIS_PLUS(firmware->getBoard()) && i==6) { + if (!IS_TARANIS_PLUS(board) && i==6) { checkbox->hide(); } } @@ -448,7 +469,7 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen slider->setTickInterval(1); slider->setMinimumSize(QSize(30, 50)); slider->setMaximumSize(QSize(50, 50)); - if (IS_TARANIS(GetEepromInterface()->getBoard())) { + if (IS_TARANIS(board)) { label->setText(switchesX9D[i]); slider->setMaximum(i==5 ? 1 : 2); } @@ -471,7 +492,7 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, firmware->getCapability(Switches)); // Pot warnings - if (IS_TARANIS(firmware->getBoard())) { + if (IS_TARANIS(board)) { for (int i=0; igetCapability(Pots); i++) { QCheckBox * cb = new QCheckBox(this); cb->setProperty("index", i+1); @@ -479,7 +500,7 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen ui->potWarningLayout->addWidget(cb, 0, i+1); connect(cb, SIGNAL(toggled(bool)), this, SLOT(potWarningToggled(bool))); potWarningCheckboxes << cb; - if (!IS_TARANIS_PLUS(firmware->getBoard()) && i==2) { + if (!IS_TARANIS_PLUS(board) && i==2) { cb->hide(); } } diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h index 3ac9df7f2..afbbf295d 100644 --- a/companion/src/modeledit/setup.h +++ b/companion/src/modeledit/setup.h @@ -29,6 +29,7 @@ class TimerPanel : public ModelPanel void on_mode_currentIndexChanged(int index); void on_value_editingFinished(); void on_minuteBeep_toggled(bool checked); + void on_name_editingFinished(); private: TimerData & timer; diff --git a/companion/src/modeledit/setup_timer.ui b/companion/src/modeledit/setup_timer.ui index d6d7c2157..5389abe17 100644 --- a/companion/src/modeledit/setup_timer.ui +++ b/companion/src/modeledit/setup_timer.ui @@ -2,21 +2,37 @@ Timer + + true + 0 0 - 586 - 38 + 626 + 33 + + -1 + 0 + + + + + 80 + 0 + + + + diff --git a/radio/src/eeprom_conversions.cpp b/radio/src/eeprom_conversions.cpp index f9cc69993..1882663ed 100644 --- a/radio/src/eeprom_conversions.cpp +++ b/radio/src/eeprom_conversions.cpp @@ -218,7 +218,7 @@ PACK(typedef struct { PACK(typedef struct { int16_t trim[4]; int8_t swtch; // swtch of phase[0] is not used - char name[LEN_FP_NAME]; + char name[LEN_FLIGHT_MODE_NAME]; uint8_t fadeIn; uint8_t fadeOut; ROTARY_ENCODER_ARRAY; diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index 5dd9139ca..185a71d4d 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -874,14 +874,17 @@ enum menuModelSetupItems { ITEM_MODEL_NAME, CASE_PCBTARANIS(ITEM_MODEL_BITMAP) ITEM_MODEL_TIMER1, + CASE_CPUARM(ITEM_MODEL_TIMER1_NAME) CASE_PERSISTENT_TIMERS(ITEM_MODEL_TIMER1_PERSISTENT) ITEM_MODEL_TIMER1_MINUTE_BEEP, ITEM_MODEL_TIMER1_COUNTDOWN_BEEP, ITEM_MODEL_TIMER2, + CASE_CPUARM(ITEM_MODEL_TIMER2_NAME) CASE_PERSISTENT_TIMERS(ITEM_MODEL_TIMER2_PERSISTENT) ITEM_MODEL_TIMER2_MINUTE_BEEP, ITEM_MODEL_TIMER2_COUNTDOWN_BEEP, CASE_CPUARM(ITEM_MODEL_TIMER3) + CASE_CPUARM(ITEM_MODEL_TIMER3_NAME) CASE_CPUARM(ITEM_MODEL_TIMER3_PERSISTENT) CASE_CPUARM(ITEM_MODEL_TIMER3_MINUTE_BEEP) CASE_CPUARM(ITEM_MODEL_TIMER3_COUNTDOWN_BEEP) @@ -999,8 +1002,9 @@ void menuModelSetup(uint8_t event) #define FAILSAFE_ROWS(x) ((g_model.moduleData[x].rfProtocol==RF_PROTO_X16 || g_model.moduleData[x].rfProtocol==RF_PROTO_LR12) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW) #define MODEL_SETUP_MAX_LINES (1+ITEM_MODEL_SETUP_MAX) #define POT_WARN_ITEMS() ((g_model.nPotsToWarn >> 6) ? (uint8_t)NUM_POTS : (uint8_t)0) + #define TIMER_ROWS 2, 0, CASE_PERSISTENT_TIMERS(0) 0, 0 bool CURSOR_ON_CELL = (m_posHorz >= 0); - MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, CASE_PERSISTENT_TIMERS(0) 0, 0, 2, CASE_PERSISTENT_TIMERS(0) 0, 0, 2, CASE_PERSISTENT_TIMERS(0) 0, 0, 0, 1, 0, CASE_PCBTARANIS(LABEL(Throttle)) 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 7, POT_WARN_ITEMS(), NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1), LABEL(InternalModule), 0, IF_INTERNAL_MODULE_ON(1), IF_INTERNAL_MODULE_ON(IS_D8_RX(0) ? (uint8_t)1 : (uint8_t)2), IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)}); + MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, CASE_PCBTARANIS(LABEL(Throttle)) 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 7, POT_WARN_ITEMS(), NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1), LABEL(InternalModule), 0, IF_INTERNAL_MODULE_ON(1), IF_INTERNAL_MODULE_ON(IS_D8_RX(0) ? (uint8_t)1 : (uint8_t)2), IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)}); #elif defined(CPUARM) #define IF_EXTERNAL_MODULE_XJT(x) (IS_MODULE_XJT(EXTERNAL_MODULE) ? (uint8_t)x : HIDDEN_ROW) #define IF_EXTERNAL_MODULE_ON(x) (g_model.externalModule == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x)) @@ -1012,13 +1016,14 @@ void menuModelSetup(uint8_t event) #define CURSOR_ON_CELL (true) #define MODEL_SETUP_MAX_LINES (1+ITEM_MODEL_SETUP_MAX) #define POT_WARN_ITEMS() ((g_model.nPotsToWarn >> 6) ? (uint8_t)NUM_POTS : (uint8_t)0) + #define TIMER_ROWS 2, 0, CASE_PERSISTENT_TIMERS(0) 0, 0 #if (defined(PCBSKY9X) && !defined(REVA) && !defined(REVX)) #define EXTRA_MODULE_ROWS LABEL(ExtraModule), 1, 2, #else #define EXTRA_MODULE_ROWS #endif #define TRAINER_MODULE_ROWS - MENU_TAB({ 0, 0, 2, CASE_PERSISTENT_TIMERS(0) 0, 0, 2, CASE_PERSISTENT_TIMERS(0) 0, 0, 2, CASE_PERSISTENT_TIMERS(0) 0, 0, 0, 1, 0, CASE_PCBTARANIS(LABEL(Throttle)) 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 6, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), EXTRA_MODULE_ROWS TRAINER_MODULE_ROWS }); + MENU_TAB({ 0, 0, TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, CASE_PCBTARANIS(LABEL(Throttle)) 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 6, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), EXTRA_MODULE_ROWS TRAINER_MODULE_ROWS }); #elif defined(CPUM64) #define CURSOR_ON_CELL (true) #define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX) @@ -1095,45 +1100,59 @@ void menuModelSetup(uint8_t event) case ITEM_MODEL_TIMER1: case ITEM_MODEL_TIMER2: case ITEM_MODEL_TIMER3: + { + unsigned int timerIdx = (k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)); + TimerData * timer = &g_model.timers[timerIdx]; + putsStrIdx(0*FW, y, STR_TIMER, timerIdx+1); + putsTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, m_posHorz==0 ? attr : 0); + putsTimer(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, m_posHorz==1 ? attr : 0, m_posHorz==2 ? attr : 0); +#if defined(PCBTARANIS) + if (attr && m_posHorz < 0) lcd_filled_rect(MODEL_SETUP_2ND_COLUMN, y, LCD_W-MODEL_SETUP_2ND_COLUMN-MENUS_SCROLLBAR_WIDTH, 8); +#endif + if (attr && (editMode>0 || p1valdiff)) { + div_t qr = div(timer->start, 60); + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR_CHECK(event, timer->mode, SWSRC_FIRST, TMRMODE_COUNT+SWSRC_LAST-1/*SWSRC_None removed*/, isSwitchAvailableInTimers); + break; + case 1: + CHECK_INCDEC_MODELVAR_ZERO(event, qr.quot, 59); + timer->start = qr.rem + qr.quot*60; + break; + case 2: + qr.rem -= checkIncDecModel(event, qr.rem+2, 1, 62)-2; + timer->start -= qr.rem ; + if ((int16_t)timer->start < 0) timer->start=0; + break; + } + } + break; + } + + case ITEM_MODEL_TIMER1_NAME: + case ITEM_MODEL_TIMER2_NAME: + case ITEM_MODEL_TIMER3_NAME: + { + TimerData * timer = &g_model.timers[k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)]; + editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_TIMER_NAME, timer->name, sizeof(timer->name), event, attr); + break; + } + case ITEM_MODEL_TIMER1_MINUTE_BEEP: case ITEM_MODEL_TIMER2_MINUTE_BEEP: case ITEM_MODEL_TIMER3_MINUTE_BEEP: + { + TimerData * timer = &g_model.timers[k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)]; + timer->minuteBeep = onoffMenuItem(timer->minuteBeep, MODEL_SETUP_2ND_COLUMN, y, STR_MINUTEBEEP, attr, event); + break; + } + case ITEM_MODEL_TIMER1_COUNTDOWN_BEEP: case ITEM_MODEL_TIMER2_COUNTDOWN_BEEP: case ITEM_MODEL_TIMER3_COUNTDOWN_BEEP: { - TimerData *timer = &g_model.timers[k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)]; - if (k==ITEM_MODEL_TIMER1_MINUTE_BEEP || k==ITEM_MODEL_TIMER2_MINUTE_BEEP || k==ITEM_MODEL_TIMER3_MINUTE_BEEP) { - timer->minuteBeep = onoffMenuItem(timer->minuteBeep, MODEL_SETUP_2ND_COLUMN, y, STR_MINUTEBEEP, attr, event); - } - else if (k==ITEM_MODEL_TIMER1_COUNTDOWN_BEEP || k==ITEM_MODEL_TIMER2_COUNTDOWN_BEEP || k==ITEM_MODEL_TIMER3_COUNTDOWN_BEEP) { - timer->countdownBeep = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_BEEPCOUNTDOWN, STR_VBEEPCOUNTDOWN, timer->countdownBeep, 0, 2, attr, event); - } - else { - putsStrIdx(0*FW, y, STR_TIMER, k>=ITEM_MODEL_TIMER3 ? 3 : (k>=ITEM_MODEL_TIMER2 ? 2 : 1)); - putsTimerMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, m_posHorz==0 ? attr : 0); - putsTimer(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, m_posHorz==1 ? attr : 0, m_posHorz==2 ? attr : 0); -#if defined(PCBTARANIS) - if (attr && m_posHorz < 0) lcd_filled_rect(MODEL_SETUP_2ND_COLUMN, y, LCD_W-MODEL_SETUP_2ND_COLUMN-MENUS_SCROLLBAR_WIDTH, 8); -#endif - if (attr && (editMode>0 || p1valdiff)) { - div_t qr = div(timer->start, 60); - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR_CHECK(event, timer->mode, SWSRC_FIRST, TMRMODE_COUNT+SWSRC_LAST-1/*SWSRC_None removed*/, isSwitchAvailableInTimers); - break; - case 1: - CHECK_INCDEC_MODELVAR_ZERO(event, qr.quot, 59); - timer->start = qr.rem + qr.quot*60; - break; - case 2: - qr.rem -= checkIncDecModel(event, qr.rem+2, 1, 62)-2; - timer->start -= qr.rem ; - if ((int16_t)timer->start < 0) timer->start=0; - break; - } - } - } + TimerData * timer = &g_model.timers[k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)]; + timer->countdownBeep = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_BEEPCOUNTDOWN, STR_VBEEPCOUNTDOWN, timer->countdownBeep, 0, 2, attr, event); break; } @@ -1141,8 +1160,8 @@ void menuModelSetup(uint8_t event) case ITEM_MODEL_TIMER2_PERSISTENT: case ITEM_MODEL_TIMER3_PERSISTENT: { - TimerData &timer = g_model.timers[k==ITEM_MODEL_TIMER3_PERSISTENT ? 2 : (k==ITEM_MODEL_TIMER2_PERSISTENT ? 1 : 0)]; - timer.persistent = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_PERSISTENT, STR_VPERSISTENT, timer.persistent, 0, 2, attr, event); + TimerData * timer = &g_model.timers[k>=ITEM_MODEL_TIMER3 ? 2 : (k>=ITEM_MODEL_TIMER2 ? 1 : 0)]; + timer->persistent = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_PERSISTENT, STR_VPERSISTENT, timer->persistent, 0, 2, attr, event); break; } #else @@ -1988,7 +2007,7 @@ void menuModelFlightModesAll(uint8_t event) break; case ITEM_FLIGHT_MODES_SWITCH: - putsSwitches((5+LEN_FP_NAME)*FW+FW/2, y, p->swtch, attr); + putsSwitches((5+LEN_FLIGHT_MODE_NAME)*FW+FW/2, y, p->swtch, attr); if (active) CHECK_INCDEC_MODELSWITCH(event, p->swtch, SWSRC_FIRST_IN_MIXES, SWSRC_LAST_IN_MIXES, isSwitchAvailableInMixes); break; @@ -1998,7 +2017,7 @@ void menuModelFlightModesAll(uint8_t event) case ITEM_FLIGHT_MODES_TRIM_AIL: { uint8_t t = j-ITEM_FLIGHT_MODES_TRIM_RUD; - putsTrimMode((4+LEN_FP_NAME)*FW+j*(5*FW/2), y, k, t, attr); + putsTrimMode((4+LEN_FLIGHT_MODE_NAME)*FW+j*(5*FW/2), y, k, t, attr); if (active) { trim_t & v = p->trim[t]; v.mode = checkIncDec(event, v.mode==TRIM_MODE_NONE ? -1 : v.mode, -1, k==0 ? 0 : 2*MAX_FLIGHT_MODES-1, EE_MODEL, isTrimModeAvailable); @@ -2231,16 +2250,16 @@ void menuModelFlightModesAll(uint8_t event) lcd_putsnAtt(4*FW+NAME_OFS, y, p->name, sizeof(p->name), ZCHAR); if (i == 0) { - lcd_puts((5+LEN_FP_NAME)*FW+SWITCH_OFS, y, STR_DEFAULT); + lcd_puts((5+LEN_FLIGHT_MODE_NAME)*FW+SWITCH_OFS, y, STR_DEFAULT); } else { - putsSwitches((5+LEN_FP_NAME)*FW+SWITCH_OFS, y, p->swtch, 0); + putsSwitches((5+LEN_FLIGHT_MODE_NAME)*FW+SWITCH_OFS, y, p->swtch, 0); for (uint8_t t=0; t=NUM_LOGICAL_SWITCH*3/4) ? BITMAP_X+28 : ((i>=NUM_LOGICAL_SWITCH/2) ? BITMAP_X+25 : ((i>=NUM_LOGICAL_SWITCH/4) ? 21 : 18))) + 3*i) @@ -366,34 +366,31 @@ void displayTopBar() #if LCD_W >= 212 void displayTimers() { - // Main timer - if (g_model.timers[0].mode) { - TimerState & timerState = timersStates[0]; - putsTimerMode(TIMERS_X, TIMER1_Y-6, g_model.timers[0].mode, SMLSIZE); - putsTimer(TIMERS_X, TIMER1_Y, timerState.val, TIMEHOUR|MIDSIZE|LEFT, TIMEHOUR|MIDSIZE|LEFT); - if (g_model.timers[0].persistent) lcd_putcAtt(TIMERS_R, TIMER1_Y+1, 'P', SMLSIZE); - if (timerState.val < 0) { - if (BLINK_ON_PHASE) { - lcd_filled_rect(TIMERS_X-7, TIMER1_Y-7, 60, 19); + // Main and Second timer + for (unsigned int i=0; i<2; i++) { + if (g_model.timers[i].mode) { + TimerState & timerState = timersStates[i]; + TimerData & timerData = g_model.timers[i]; + uint8_t y = TIMERS_Y + i*TIMERS_H; + if (zlen(timerData.name, LEN_TIMER_NAME) > 0) { + lcd_putsnAtt(TIMERS_X, y-7, timerData.name, LEN_TIMER_NAME, ZCHAR|SMLSIZE); } - } - } - - // Second timer - if (g_model.timers[1].mode) { - TimerState & timerState = timersStates[1]; - putsTimerMode(TIMERS_X, TIMER2_Y-6, g_model.timers[1].mode, SMLSIZE); - putsTimer(TIMERS_X, TIMER2_Y, timerState.val, TIMEHOUR|MIDSIZE|LEFT, TIMEHOUR|MIDSIZE|LEFT); - if (g_model.timers[1].persistent) lcd_putcAtt(TIMERS_R, TIMER2_Y+1, 'P', SMLSIZE); - if (timerState.val < 0) { - if (BLINK_ON_PHASE) { - lcd_filled_rect(TIMERS_X-7, TIMER2_Y-7, 60, 19); + else { + putsTimerMode(TIMERS_X, y-7, timerData.mode, SMLSIZE); + } + putsTimer(TIMERS_X, y, timerState.val, TIMEHOUR|MIDSIZE|LEFT, TIMEHOUR|MIDSIZE|LEFT); + if (timerData.persistent) { + lcd_putcAtt(TIMERS_R, y+1, 'P', SMLSIZE); + } + if (timerState.val < 0) { + if (BLINK_ON_PHASE) { + lcd_filled_rect(TIMERS_X-7, y-8, 60, 20); + } } } } } #else - void displayTimers() { #if defined(TRANSLATIONS_CZ) @@ -406,7 +403,19 @@ void displayTimers() TimerState & timerState = timersStates[0]; uint8_t att = DBLSIZE | (timerState.val<0 ? BLINK|INVERS : 0); putsTimer(12*FW+2+10*FWNUM-4, FH*2, timerState.val, att, att); - putsTimerMode(timerState.val >= 0 ? MAINTMR_LBL_COL : MAINTMR_LBL_COL-7, FH*3, g_model.timers[0].mode); + uint8_t xLabel = (timerState.val >= 0 ? MAINTMR_LBL_COL : MAINTMR_LBL_COL-7); +#if defined(CPUARM) + uint8_t len = zlen(g_model.timers[0].name, LEN_TIMER_NAME); + if (len > 0) { + xLabel += (LEN_TIMER_NAME-len)*FW; + lcd_putsnAtt(xLabel, FH*3, g_model.timers[0].name, len, ZCHAR); + } + else { + putsTimerMode(xLabel, FH*3, g_model.timers[0].mode); + } +#else + putsTimerMode(xLabel, FH*3, g_model.timers[0].mode); +#endif } } #endif diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 329a0ea49..1c7e77941 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -91,80 +91,81 @@ #endif #if defined(PCBTARANIS) - #define MAX_MODELS 60 - #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 - #define MAX_FLIGHT_MODES 9 - #define MAX_MIXERS 64 - #define MAX_EXPOS 64 - #define NUM_LOGICAL_SWITCH 32 // number of custom switches - #define NUM_CFN 64 // number of functions assigned to switches - #define MAX_SCRIPTS 7 - #define MAX_INPUTS 32 - #define NUM_TRAINER 16 - #define NUM_POTS 5 - #define NUM_XPOTS 3 + #define MAX_MODELS 60 + #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 + #define MAX_FLIGHT_MODES 9 + #define MAX_MIXERS 64 + #define MAX_EXPOS 64 + #define NUM_LOGICAL_SWITCH 32 // number of custom switches + #define NUM_CFN 64 // number of functions assigned to switches + #define MAX_SCRIPTS 7 + #define MAX_INPUTS 32 + #define NUM_TRAINER 16 + #define NUM_POTS 5 + #define NUM_XPOTS 3 #elif defined(CPUARM) - #define MAX_MODELS 60 - #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 - #define MAX_FLIGHT_MODES 9 - #define MAX_MIXERS 64 - #define MAX_EXPOS 32 - #define NUM_LOGICAL_SWITCH 32 // number of custom switches - #define NUM_CFN 64 // number of functions assigned to switches - #define NUM_TRAINER 16 - #define NUM_POTS 3 - #define NUM_XPOTS 0 + #define MAX_MODELS 60 + #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 + #define MAX_FLIGHT_MODES 9 + #define MAX_MIXERS 64 + #define MAX_EXPOS 32 + #define NUM_LOGICAL_SWITCH 32 // number of custom switches + #define NUM_CFN 64 // number of functions assigned to switches + #define NUM_TRAINER 16 + #define NUM_POTS 3 + #define NUM_XPOTS 0 #elif defined(CPUM2560) || defined(CPUM2561) - #define MAX_MODELS 30 - #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 - #define MAX_FLIGHT_MODES 6 - #define MAX_MIXERS 32 - #define MAX_EXPOS 16 - #define NUM_LOGICAL_SWITCH 12 // number of custom switches - #define NUM_CFN 24 // number of functions assigned to switches - #define NUM_TRAINER 8 - #define NUM_POTS 3 - #define NUM_XPOTS 0 + #define MAX_MODELS 30 + #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 + #define MAX_FLIGHT_MODES 6 + #define MAX_MIXERS 32 + #define MAX_EXPOS 16 + #define NUM_LOGICAL_SWITCH 12 // number of custom switches + #define NUM_CFN 24 // number of functions assigned to switches + #define NUM_TRAINER 8 + #define NUM_POTS 3 + #define NUM_XPOTS 0 #elif defined(CPUM128) - #define MAX_MODELS 30 - #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 - #define MAX_FLIGHT_MODES 5 - #define MAX_MIXERS 32 - #define MAX_EXPOS 14 - #define NUM_LOGICAL_SWITCH 12 // number of custom switches - #define NUM_CFN 24 // number of functions assigned to switches - #define NUM_TRAINER 8 - #define NUM_POTS 3 - #define NUM_XPOTS 0 + #define MAX_MODELS 30 + #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 + #define MAX_FLIGHT_MODES 5 + #define MAX_MIXERS 32 + #define MAX_EXPOS 14 + #define NUM_LOGICAL_SWITCH 12 // number of custom switches + #define NUM_CFN 24 // number of functions assigned to switches + #define NUM_TRAINER 8 + #define NUM_POTS 3 + #define NUM_XPOTS 0 #else - #define MAX_MODELS 16 - #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 - #define MAX_FLIGHT_MODES 5 - #define MAX_MIXERS 32 - #define MAX_EXPOS 14 - #define NUM_LOGICAL_SWITCH 12 // number of custom switches - #define NUM_CFN 16 // number of functions assigned to switches - #define NUM_TRAINER 8 - #define NUM_POTS 3 - #define NUM_XPOTS 0 + #define MAX_MODELS 16 + #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 + #define MAX_FLIGHT_MODES 5 + #define MAX_MIXERS 32 + #define MAX_EXPOS 14 + #define NUM_LOGICAL_SWITCH 12 // number of custom switches + #define NUM_CFN 16 // number of functions assigned to switches + #define NUM_TRAINER 8 + #define NUM_POTS 3 + #define NUM_XPOTS 0 #endif #if defined(CPUARM) - #define MAX_TIMERS 3 + #define MAX_TIMERS 3 #else - #define MAX_TIMERS 2 + #define MAX_TIMERS 2 #endif -#define NUM_CYC 3 -#define NUM_CAL_PPM 4 +#define NUM_CYC 3 +#define NUM_CAL_PPM 4 #if defined(PCBTARANIS) - #define LEN_MODEL_NAME 12 - #define LEN_BITMAP_NAME 10 - #define LEN_EXPOMIX_NAME 8 - #define LEN_FP_NAME 10 - #define LEN_CHANNEL_NAME 6 - #define LEN_INPUT_NAME 4 + #define LEN_MODEL_NAME 12 + #define LEN_TIMER_NAME 8 + #define LEN_FLIGHT_MODE_NAME 10 + #define LEN_BITMAP_NAME 10 + #define LEN_EXPOMIX_NAME 8 + #define LEN_CHANNEL_NAME 6 + #define LEN_INPUT_NAME 4 enum CurveType { CURVE_TYPE_STANDARD, CURVE_TYPE_CUSTOM, @@ -176,28 +177,29 @@ PACK(typedef struct t_CurveInfo { uint8_t spare:4; int8_t points; }) CurveInfo; - #define MAX_CURVES 32 - #define NUM_POINTS 512 - #define CURVDATA CurveInfo + #define MAX_CURVES 32 + #define NUM_POINTS 512 + #define CURVDATA CurveInfo #elif defined(CPUARM) - #define LEN_MODEL_NAME 10 - #define LEN_EXPOMIX_NAME 6 - #define LEN_FP_NAME 6 - #define MAX_CURVES 16 - #define NUM_POINTS 512 - #define CURVDATA int16_t + #define LEN_MODEL_NAME 10 + #define LEN_TIMER_NAME 3 + #define LEN_FLIGHT_MODE_NAME 6 + #define LEN_EXPOMIX_NAME 6 + #define MAX_CURVES 16 + #define NUM_POINTS 512 + #define CURVDATA int16_t #else - #define LEN_MODEL_NAME 10 - #define LEN_FP_NAME 6 - #define MAX_CURVES 8 - #define NUM_POINTS (112-MAX_CURVES) - #define CURVDATA int8_t + #define LEN_MODEL_NAME 10 + #define LEN_FLIGHT_MODE_NAME 6 + #define MAX_CURVES 8 + #define NUM_POINTS (112-MAX_CURVES) + #define CURVDATA int8_t #endif #if defined(PCBTARANIS) || defined(PCBSKY9X) - #define NUM_MODULES 2 + #define NUM_MODULES 2 #else - #define NUM_MODULES 1 + #define NUM_MODULES 1 #endif typedef int16_t gvar_t; @@ -1343,7 +1345,7 @@ PACK(typedef struct t_SwashRingData { // Swash Ring data PACK(typedef struct t_FlightModeData { TRIMS_ARRAY; int8_t swtch; // swtch of phase[0] is not used - char name[LEN_FP_NAME]; + char name[LEN_FLIGHT_MODE_NAME]; uint8_t fadeIn; uint8_t fadeOut; ROTARY_ENCODER_ARRAY; @@ -1353,7 +1355,7 @@ PACK(typedef struct t_FlightModeData { PACK(typedef struct t_FlightModeData { TRIMS_ARRAY; int8_t swtch; // swtch of phase[0] is not used - char name[LEN_FP_NAME]; + char name[LEN_FLIGHT_MODE_NAME]; uint8_t fadeIn:4; uint8_t fadeOut:4; ROTARY_ENCODER_ARRAY; @@ -1647,6 +1649,7 @@ PACK(typedef struct t_TimerData { uint8_t spare:3; uint32_t start:24; int32_t value:24; + char name[LEN_TIMER_NAME]; }) TimerData; #define IS_MANUAL_RESET_TIMER(idx) (g_model.timers[idx].persistent == 2) #elif defined(CPUM2560) diff --git a/radio/src/opentx.h b/radio/src/opentx.h index b79ab81ff..ecd60c986 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1578,7 +1578,7 @@ uint8_t zlen(const char *str, uint8_t size); bool zexist(const char *str, uint8_t size); char * strcat_zchar(char * dest, char * name, uint8_t size, const char *defaultName, uint8_t defaultNameSize, uint8_t defaultIdx); #define strcat_modelname(dest, idx) strcat_zchar(dest, modelHeaders[idx].name, LEN_MODEL_NAME, STR_MODEL, PSIZE(TR_MODEL), idx+1) -#define strcat_phasename(dest, idx) strcat_zchar(dest, g_model.flightModeData[idx].name, LEN_FP_NAME, STR_FP, PSIZE(TR_FP), idx+1) +#define strcat_phasename(dest, idx) strcat_zchar(dest, g_model.flightModeData[idx].name, LEN_FLIGHT_MODE_NAME, STR_FP, PSIZE(TR_FP), idx+1) #define ZLEN(s) zlen(s, sizeof(s)) #define ZEXIST(s) zexist(s, sizeof(s)) #endif diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 597bff78d..e4326afc0 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -224,6 +224,7 @@ const pm_char STR_ALARMWARNING[] PROGMEM = TR_ALARMWARNING; const pm_char STR_RENAVIG[] PROGMEM = TR_RENAVIG; #endif const pm_char STR_THROTTLEREVERSE[] PROGMEM = TR_THROTTLEREVERSE; +const pm_char STR_TIMER_NAME[] PROGMEM = TR_TIMER_NAME; const pm_char STR_MINUTEBEEP[] PROGMEM = TR_MINUTEBEEP; const pm_char STR_BEEPCOUNTDOWN[] PROGMEM = TR_BEEPCOUNTDOWN; const pm_char STR_PERSISTENT[] PROGMEM = TR_PERSISTENT; diff --git a/radio/src/translations.h b/radio/src/translations.h index 9f57e3930..18c441b92 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -392,6 +392,7 @@ extern const pm_char STR_MEMORYWARNING[]; extern const pm_char STR_ALARMWARNING[]; extern const pm_char STR_RENAVIG[]; extern const pm_char STR_THROTTLEREVERSE[]; +extern const pm_char STR_TIMER_NAME[]; extern const pm_char STR_MINUTEBEEP[]; extern const pm_char STR_BEEPCOUNTDOWN[]; extern const pm_char STR_PERSISTENT[]; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 0e33dde45..d828451f1 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -598,6 +598,7 @@ #define TR_RENAVIG "Navig. RotEnc" #define TR_THROTTLE_LABEL "Plyn" #define TR_THROTTLEREVERSE TR("ReversPlyn", INDENT"Revers plynu") +#define TR_TIMER_NAME INDENT "Name" #define TR_MINUTEBEEP TR(INDENT"Minuta", INDENT"Oznamovat minuty") #define TR_BEEPCOUNTDOWN INDENT"Odpočet" #define TR_PERSISTENT INDENT"Trvalé" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index f57a48e60..51baca89f 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -600,22 +600,23 @@ #define TR_RENAVIG "Drehgeb. Navig." #define TR_THROTTLE_LABEL "---Gas-Kontrolle----" #define TR_THROTTLEREVERSE TR("Gas invers", INDENT "Vollgas hinten?") //Änderung wg TH9x, Taranis -#define TR_MINUTEBEEP TR(INDENT"Min-Alarm",INDENT"Minuten-Alarm") +#define TR_TIMER_NAME INDENT "Name" +#define TR_MINUTEBEEP TR(INDENT"Min-Alarm", INDENT"Minuten-Alarm") #define TR_BEEPCOUNTDOWN INDENT"Countdown" -#define TR_PERSISTENT TR(INDENT"Permanent",INDENT"Permanent") +#define TR_PERSISTENT TR(INDENT"Permanent", INDENT"Permanent") #define TR_BACKLIGHT_LABEL "----LCD-Beleuchtg----" #define TR_BLDELAY INDENT"Dauer" #define TR_BLONBRIGHTNESS INDENT"An-Helligkeit" #define TR_BLOFFBRIGHTNESS INDENT"Aus-Helligkeit" #define TR_BLCOLOR INDENT "Farbe" -#define TR_SPLASHSCREEN TR("Startbild Ein","Startbild Ein für") +#define TR_SPLASHSCREEN TR("Startbild Ein", "Startbild Ein für") #define TR_THROTTLEWARNING TR("Gasalarm", INDENT "Gas Alarm") #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") -#define TR_RXCHANNELORD TR("Kanalanordnung","Kanalvoreinstellung") -#define TR_SWITCHES_DELAY TR("Sw. Mitte Delay","Schaltermitte Verz.") //Schalter Mitten verzögern Anpassung -#define TR_SLAVE TR("Schüler PPM1-16","Schüler PPM1-16 als Ausgang") +#define TR_TIMEZONE TR("Zeitzone", "GPS-Zeitzone") +#define TR_RXCHANNELORD TR("Kanalanordnung", "Kanalvoreinstellung") +#define TR_SWITCHES_DELAY TR("Sw. Mitte Delay", "Schaltermitte Verz.") //Schalter Mitten verzögern Anpassung +#define TR_SLAVE TR("Schüler PPM1-16", "Schüler PPM1-16 als Ausgang") #define TR_MODESRC " Modus\003% Quelle" #define TR_MULTIPLIER "Multiplikator" #define TR_CAL "Kal." diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index e70431b17..072f43be9 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -600,6 +600,7 @@ #define TR_RENAVIG "RotEnc Navig" #define TR_THROTTLE_LABEL "Throttle" #define TR_THROTTLEREVERSE TR("T-Reverse", INDENT "Reverse") +#define TR_TIMER_NAME INDENT "Name" #define TR_MINUTEBEEP TR(INDENT "Minute",INDENT "Minute call") #define TR_BEEPCOUNTDOWN INDENT "Countdown" #define TR_PERSISTENT TR(INDENT "Persist.",INDENT "Persistent") diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 7afac0ce3..67ecbd4da 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -598,9 +598,10 @@ #define TR_RENAVIG "RotEnc Navig" #define TR_THROTTLE_LABEL "Throttle" #define TR_THROTTLEREVERSE TR("Invert_Acel", INDENT "Invertir Acel.") -#define TR_MINUTEBEEP TR(INDENT"Minuto",INDENT"Cada Minuto") +#define TR_TIMER_NAME INDENT "Name" +#define TR_MINUTEBEEP TR(INDENT"Minuto", INDENT"Cada Minuto") #define TR_BEEPCOUNTDOWN INDENT"Cuentaatras" -#define TR_PERSISTENT TR(INDENT"Persist.",INDENT"Persistente") +#define TR_PERSISTENT TR(INDENT"Persist.", INDENT"Persistente") #define TR_BACKLIGHT_LABEL "Luz Fondo" #define TR_BLDELAY INDENT"Duracion" #define TR_BLONBRIGHTNESS INDENT"MAS Brillo" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index df2be00cf..8454f6488 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -598,9 +598,10 @@ #define TR_RENAVIG "RotEnc Navig" #define TR_THROTTLE_LABEL "Throttle" #define TR_THROTTLEREVERSE TR("T-Reverse", INDENT "Throttle reverse") -#define TR_MINUTEBEEP TR(INDENT"Minute",INDENT"Minute call") +#define TR_TIMER_NAME INDENT "Name" +#define TR_MINUTEBEEP TR(INDENT"Minute", INDENT"Minute call") #define TR_BEEPCOUNTDOWN INDENT"Countdown" -#define TR_PERSISTENT TR(INDENT"Persist.",INDENT"Persistent") +#define TR_PERSISTENT TR(INDENT"Persist.", INDENT"Persistent") #define TR_BACKLIGHT_LABEL "Backlight" #define TR_BLDELAY INDENT"Duration" #define TR_BLONBRIGHTNESS INDENT"ON Brightness" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 1ca96b038..f182d2e8a 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -591,16 +591,17 @@ #define TR_CONTRAST "Contraste" #define TR_ALARMS_LABEL "Alarmes" #define TR_BATTERY_RANGE "Plage batterie" -#define TR_BATTERYWARNING TR(INDENT "Batterie",INDENT "Batterie faible") +#define TR_BATTERYWARNING TR(INDENT "Batterie", INDENT "Batterie faible") #define TR_INACTIVITYALARM INDENT "Inactivité" #define TR_MEMORYWARNING INDENT "Mémoire pleine" -#define TR_ALARMWARNING TR(INDENT "Silence",INDENT "Sons désactivés") +#define TR_ALARMWARNING TR(INDENT "Silence", INDENT "Sons désactivés") #define TR_RENAVIG "Navig EncRot" #define TR_THROTTLE_LABEL "Gaz" #define TR_THROTTLEREVERSE TR("Inv. gaz", INDENT "Inversion gaz") -#define TR_MINUTEBEEP TR(INDENT "Bip min.",INDENT "Annonces minutes") -#define TR_BEEPCOUNTDOWN TR(INDENT "Bip fin",INDENT "Compte à rebours") -#define TR_PERSISTENT TR(INDENT "Persist.",INDENT "Persistant") +#define TR_TIMER_NAME INDENT "Name" +#define TR_MINUTEBEEP TR(INDENT "Bip min.", INDENT "Annonces minutes") +#define TR_BEEPCOUNTDOWN TR(INDENT "Bip fin", INDENT "Compte à rebours") +#define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistant") #define TR_BACKLIGHT_LABEL "Rétroéclairage" #define TR_BLDELAY INDENT "Durée" #define TR_BLONBRIGHTNESS INDENT "Luminosité ON" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index c3ad15a06..62d8b6e63 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -598,10 +598,11 @@ #define TR_RENAVIG "Navig EncRot " #define TR_THROTTLE_LABEL "Motore" #define TR_THROTTLEREVERSE TR("Mot inv.", INDENT "Motore Inverso") +#define TR_TIMER_NAME INDENT "Name" #define TR_MINUTEBEEP INDENT"Minuto" -#define TR_BEEPCOUNTDOWN TR(INDENT"Conto rov",INDENT"Conto rovescia") -#define TR_PERSISTENT TR(INDENT"Persist.",INDENT"Persistente") -#define TR_BACKLIGHT_LABEL TR("Retroillum.","Retroilluminazione") +#define TR_BEEPCOUNTDOWN TR(INDENT"Conto rov", INDENT"Conto rovescia") +#define TR_PERSISTENT TR(INDENT"Persist.", INDENT"Persistente") +#define TR_BACKLIGHT_LABEL TR("Retroillum.", "Retroilluminazione") #define TR_BLDELAY INDENT"Durata" #define TR_BLONBRIGHTNESS TR(INDENT"Lumin. ON",INDENT"Luminosità ON") #define TR_BLOFFBRIGHTNESS TR(INDENT"Lumin. OFF",INDENT"Luminosità OFF") diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a611309b1..8b1a3a207 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -598,9 +598,10 @@ #define TR_RENAVIG "Nawigacja potencjometrem" #define TR_THROTTLE_LABEL "Gaz " #define TR_THROTTLEREVERSE TR("OdwrGaz", INDENT "OdwrGaz") +#define TR_TIMER_NAME INDENT "Name" #define TR_MINUTEBEEP TR(INDENT "Minuta", INDENT "PikCoMinutę") #define TR_BEEPCOUNTDOWN INDENT "Odliczanie" -#define TR_PERSISTENT TR(INDENT "Dokł.",INDENT "Dokładny") +#define TR_PERSISTENT TR(INDENT "Dokł.", INDENT "Dokładny") #define TR_BACKLIGHT_LABEL "Podświetl" #define TR_BLDELAY INDENT"Czas trwania" #define TR_BLONBRIGHTNESS INDENT"Jasnośc wł." diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 862647321..e00553c65 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -598,13 +598,14 @@ #define TR_RENAVIG "RotEnc Navig" #define TR_THROTTLE_LABEL "Throttle" #define TR_THROTTLEREVERSE TR("Inverte Acel.", INDENT "Inverte Acel.") -#define TR_MINUTEBEEP INDENT"Beep Minuto" -#define TR_BEEPCOUNTDOWN INDENT"Beep Regressivo" -#define TR_PERSISTENT INDENT"Persist." +#define TR_TIMER_NAME INDENT "Name" +#define TR_MINUTEBEEP INDENT "Beep Minuto" +#define TR_BEEPCOUNTDOWN INDENT "Beep Regressivo" +#define TR_PERSISTENT INDENT "Persist." #define TR_BACKLIGHT_LABEL "Backlight" -#define TR_BLDELAY INDENT"Tempo Backlight" -#define TR_BLONBRIGHTNESS INDENT"ON Brightness" -#define TR_BLOFFBRIGHTNESS INDENT"OFF Brightness" +#define TR_BLDELAY INDENT "Tempo Backlight" +#define TR_BLONBRIGHTNESS INDENT "ON Brightness" +#define TR_BLOFFBRIGHTNESS INDENT "OFF Brightness" #define TR_BLCOLOR INDENT "Color" #define TR_SPLASHSCREEN "Splash screen" #define TR_THROTTLEWARNING TR("Avisa Acel", INDENT "Avisa Acel") diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 150ca2673..85e0a95c4 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -598,19 +598,20 @@ #define TR_RENAVIG "RotEnc Navig" #define TR_THROTTLE_LABEL "Gas" #define TR_THROTTLEREVERSE TR("Inv.Gas", INDENT "Inverterad Gas") -#define TR_MINUTEBEEP INDENT"Minutpip" -#define TR_BEEPCOUNTDOWN INDENT"Nedräkning" -#define TR_PERSISTENT TR("Jämt på ",INDENT"Alltid På") +#define TR_TIMER_NAME INDENT "Name" +#define TR_MINUTEBEEP INDENT "Minutpip" +#define TR_BEEPCOUNTDOWN INDENT "Nedräkning" +#define TR_PERSISTENT TR("Jämt på ", INDENT"Alltid På") #define TR_BACKLIGHT_LABEL "Belysning" -#define TR_BLDELAY INDENT"Av efter" -#define TR_BLONBRIGHTNESS INDENT"På Ljusstyrka" -#define TR_BLOFFBRIGHTNESS INDENT"Av Ljusstyrka" +#define TR_BLDELAY INDENT "Av efter" +#define TR_BLONBRIGHTNESS INDENT "På Ljusstyrka" +#define TR_BLOFFBRIGHTNESS INDENT "Av Ljusstyrka" #define TR_SPLASHSCREEN "Startbild" #define TR_BLCOLOR INDENT "Color" #define TR_THROTTLEWARNING TR("Gasvarning", INDENT "Gasvarning") #define TR_SWITCHWARNING TR("Bryt.varn.", INDENT "Brytarvarning") #define TR_POTWARNING TR("Rattvarn.", INDENT "Rattvarning") -#define TR_TIMEZONE TR("Tidszon","GPS Tidszon") +#define TR_TIMEZONE TR("Tidszon", "GPS Tidszon") #define TR_RXCHANNELORD "Kanaler i RX" #define TR_SWITCHES_DELAY "Brytarfördröjning" #define TR_SLAVE "Elev"