feat: option to automatically power off radio after inactivity (#3414)

This commit is contained in:
Paul Tapper
2024-08-28 15:31:25 +10:00
committed by GitHub
parent 1852c8c673
commit af9ba9cef7
41 changed files with 1042 additions and 927 deletions
@@ -280,6 +280,7 @@ Node convert<GeneralSettings>::encode(const GeneralSettings& rhs)
node["antennaMode"] = antennaModeLut << rhs.antennaMode;
node["pwrOnSpeed"] = rhs.pwrOnSpeed;
node["pwrOffSpeed"] = rhs.pwrOffSpeed;
node["pwrOffIfInactive"] = rhs.pwrOffIfInactive; // Power off after inactivity
node["disablePwrOnOffHaptic"] = (int)rhs.disablePwrOnOffHaptic;
for (int i = 0; i < CPN_MAX_SPECIAL_FUNCTIONS; i++) {
@@ -559,6 +560,7 @@ bool convert<GeneralSettings>::decode(const Node& node, GeneralSettings& rhs)
node["backlightColor"] >> rhs.backlightColor;
node["pwrOnSpeed"] >> rhs.pwrOnSpeed;
node["pwrOffSpeed"] >> rhs.pwrOffSpeed;
node["pwrOffIfInactive"] >> rhs.pwrOffIfInactive; // Power off after inactivity
node["disablePwrOnOffHaptic"] >> rhs.disablePwrOnOffHaptic;
if (node["customFn"]) {
@@ -314,6 +314,7 @@ class GeneralSettings {
bool modelSFDisabled;
bool modelCustomScriptsDisabled;
bool modelTelemetryDisabled;
unsigned int pwrOffIfInactive;
int modelSelectLayout;
int labelSingleSelect;
@@ -284,6 +284,8 @@ ui(new Ui::GeneralSetup)
ui->pwrOnDelay->hide();
ui->pwrOffDelayLabel->hide();
ui->pwrOffDelay->hide();
ui->pwrOffIfInactiveLabel->hide();
ui->pwrOffIfInactiveSB->hide();
}
else if (!IS_TARANIS(board)) {
ui->pwrOnDelayLabel->hide();
@@ -524,6 +526,7 @@ void GeneralSetupPanel::setValues()
ui->pwrOnDelay->setCurrentIndex(pwrDelayFromYaml(generalSettings.pwrOnSpeed));
ui->pwrOffDelay->setCurrentIndex(pwrDelayFromYaml(generalSettings.pwrOffSpeed));
ui->pwrOffIfInactiveSB->setValue(generalSettings.pwrOffIfInactive);
ui->registrationId->setText(generalSettings.registrationId);
@@ -831,6 +834,12 @@ void GeneralSetupPanel::on_inactimerSB_editingFinished()
emit modified();
}
void GeneralSetupPanel::on_pwrOffIfInactiveSB_editingFinished()
{
generalSettings.pwrOffIfInactive = ui->pwrOffIfInactiveSB->value();
emit modified();
}
void GeneralSetupPanel::on_memwarnChkB_stateChanged(int)
{
generalSettings.disableMemoryWarning = ui->memwarnChkB->isChecked() ? 0 : 1;
+2
View File
@@ -104,6 +104,8 @@ class GeneralSetupPanel : public GeneralPanel
void on_favMultiMode_CB_currentIndexChanged(int);
void on_invertLCD_CB_stateChanged(int);
void on_pwrOffIfInactiveSB_editingFinished();
private:
Ui::GeneralSetup *ui;
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -83,11 +83,11 @@ static inline void check_struct()
#endif
#if defined(PCBXLITES)
CHKSIZE(RadioData, 871);
CHKSIZE(RadioData, 872);
#elif defined(COLORLCD)
CHKSIZE(RadioData, 965);
CHKSIZE(RadioData, 966);
#else
CHKSIZE(RadioData, 869);
CHKSIZE(RadioData, 870);
#endif
#if defined(RADIO_TPRO) || defined(RADIO_TPROV2)
+2 -2
View File
@@ -987,9 +987,7 @@ PACK(struct RadioData {
NOBACKUP(uint8_t modelSFDisabled:1);
NOBACKUP(uint8_t modelCustomScriptsDisabled:1);
NOBACKUP(uint8_t modelTelemetryDisabled:1);
NOBACKUP(uint8_t disableTrainerPoweroffAlarm:1);
NOBACKUP(uint8_t disablePwrOnOffHaptic:1);
#if defined(COLORLCD)
@@ -1001,6 +999,8 @@ PACK(struct RadioData {
NOBACKUP(uint8_t spare:4 SKIP);
#endif
NOBACKUP(uint8_t pwrOffIfInactive);
NOBACKUP(uint8_t getBrightness() const
{
#if defined(OLED_SCREEN)
+25 -2
View File
@@ -40,6 +40,7 @@
#include "switches.h"
#include "inactivity_timer.h"
#include "input_mapping.h"
#include "trainer.h"
#include "tasks.h"
#include "tasks/mixer_task.h"
@@ -1648,6 +1649,25 @@ uint32_t pwrPressedDuration()
inline tmr10ms_t getTicks() { return g_tmr10ms; }
#endif
bool pwrOffDueToInactivity()
{
uint8_t inactivityLimit = g_eeGeneral.pwrOffIfInactive;
static tmr10ms_t lastConnectedTime = 0;
tmr10ms_t currentTime = get_tmr10ms();
if (TELEMETRY_STREAMING() ||
(usbPlugged() && getSelectedUsbMode() != USB_UNSELECTED_MODE) ||
isTrainerValid())
lastConnectedTime = currentTime;
bool inactivityShutdown =
inactivityLimit && inactivity.counter > 60u * inactivityLimit &&
(currentTime - lastConnectedTime) / 100u > 60u * inactivityLimit;
return inactivityShutdown;
}
uint32_t pwrCheck()
{
const char * message = nullptr;
@@ -1660,11 +1680,14 @@ uint32_t pwrCheck()
static uint8_t pwr_check_state = PWR_CHECK_ON;
bool inactivityShutdown = pwrOffDueToInactivity();
if (pwr_check_state == PWR_CHECK_OFF) {
return e_power_off;
}
else if (pwrPressed()) {
inactivityTimerReset(ActivitySource::Keys);
else if (pwrPressed() || inactivityShutdown) {
if (!inactivityShutdown)
inactivityTimerReset(ActivitySource::Keys);
if (TELEMETRY_STREAMING()) {
message = STR_MODEL_STILL_POWERED;
+9
View File
@@ -93,6 +93,7 @@ enum {
ITEM_RADIO_SETUP_START_SOUND,
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_ON_SPEED)
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_OFF_SPEED)
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_AUTO_OFF)
CASE_HAPTIC(ITEM_RADIO_SETUP_PWR_ON_OFF_HAPTIC)
CASE_PXX2(ITEM_RADIO_SETUP_OWNER_ID)
CASE_GPS(ITEM_RADIO_SETUP_LABEL_GPS)
@@ -191,6 +192,7 @@ void menuRadioSetup(event_t event)
0,
CASE_PWR_BUTTON_PRESS(0)
CASE_PWR_BUTTON_PRESS(0)
CASE_PWR_BUTTON_PRESS(0)
CASE_HAPTIC(0) // power on/off haptic
CASE_PXX2(0) /* owner registration ID */
@@ -590,6 +592,13 @@ void menuRadioSetup(event_t event)
case ITEM_RADIO_SETUP_PWR_OFF_SPEED:
g_eeGeneral.pwrOffSpeed = pwrDelayToYaml(editChoice(LCD_W-2, y, STR_PWR_OFF_DELAY, STR_PWR_OFF_DELAYS, pwrDelayFromYaml(g_eeGeneral.pwrOffSpeed), 0, 4, attr|RIGHT, event));
break;
case ITEM_RADIO_SETUP_PWR_AUTO_OFF:
lcdDrawTextAlignedLeft(y, STR_PWR_AUTO_OFF);
lcdDrawNumber(LCD_W-7, y, g_eeGeneral.pwrOffIfInactive, attr|RIGHT);
lcdDrawChar(lcdLastRightPos, y, 'm');
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.pwrOffIfInactive, 0, 255);
break;
#endif
#if defined(HAPTIC)
+11 -2
View File
@@ -82,6 +82,7 @@ enum MenuRadioSetupItems {
ITEM_RADIO_SETUP_START_SOUND,
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_ON_SPEED)
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_OFF_SPEED)
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_AUTO_OFF)
CASE_HAPTIC(ITEM_RADIO_SETUP_PWR_ON_OFF_HAPTIC)
#if defined(PXX2)
ITEM_RADIO_SETUP_OWNER_ID,
@@ -195,6 +196,7 @@ void menuRadioSetup(event_t event)
0,
CASE_PWR_BUTTON_PRESS(0) // pwr on speed
CASE_PWR_BUTTON_PRESS(0) // pwr off speed
CASE_PWR_BUTTON_PRESS(0) // pwr auto off
CASE_HAPTIC(0) // power on/off haptic
CASE_PXX2(0) // owner registration ID
CASE_GPS(LABEL(GPS))
@@ -549,11 +551,18 @@ void menuRadioSetup(event_t event)
#if defined(PWR_BUTTON_PRESS)
case ITEM_RADIO_SETUP_PWR_ON_SPEED:
g_eeGeneral.pwrOnSpeed = pwrDelayToYaml(editChoice(LCD_W-2, y, STR_PWR_ON_DELAY, STR_PWR_OFF_DELAYS, pwrDelayFromYaml(g_eeGeneral.pwrOnSpeed), 0, 4, attr|RIGHT, event));
g_eeGeneral.pwrOnSpeed = pwrDelayToYaml(editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_PWR_ON_DELAY, STR_PWR_OFF_DELAYS, pwrDelayFromYaml(g_eeGeneral.pwrOnSpeed), 0, 4, attr|LEFT, event));
break;
case ITEM_RADIO_SETUP_PWR_OFF_SPEED:
g_eeGeneral.pwrOffSpeed = pwrDelayToYaml(editChoice(LCD_W-2, y, STR_PWR_OFF_DELAY, STR_PWR_OFF_DELAYS, pwrDelayFromYaml(g_eeGeneral.pwrOffSpeed), 0, 4, attr|RIGHT, event));
g_eeGeneral.pwrOffSpeed = pwrDelayToYaml(editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_PWR_OFF_DELAY, STR_PWR_OFF_DELAYS, pwrDelayFromYaml(g_eeGeneral.pwrOffSpeed), 0, 4, attr|LEFT, event));
break;
case ITEM_RADIO_SETUP_PWR_AUTO_OFF:
lcdDrawTextAlignedLeft(y, STR_PWR_AUTO_OFF);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.pwrOffIfInactive, attr|LEFT);
lcdDrawChar(lcdLastRightPos, y, 'm');
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.pwrOffIfInactive, 0, 255);
break;
#endif
@@ -770,6 +770,16 @@ static SetupLineDef setupLines[] = {
});
}
},
// Pwr Off If Inactive
{
STR_PWR_AUTO_OFF,
[](Window* parent, coord_t x, coord_t y) {
auto edit = new NumberEdit(parent,{x, y, RadioSetupPage::NUM_W, EdgeTxStyles::UI_ELEMENT_HEIGHT}, 0,
255, GET_SET_DEFAULT(g_eeGeneral.pwrOffIfInactive));
edit->setSuffix(" min");
}
},
#endif
#if defined(HAPTIC)
{
@@ -362,6 +362,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -386,6 +386,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -386,6 +386,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -388,6 +388,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -362,6 +362,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -362,6 +362,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -388,6 +388,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_PADDING( 6 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -360,6 +360,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_PADDING( 4 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -361,6 +361,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_PADDING( 4 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -361,6 +361,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disableTrainerPoweroffAlarm", 1 ),
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_PADDING( 4 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -361,6 +361,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -365,6 +365,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_UNSIGNED( "disablePwrOnOffHaptic", 1 ),
YAML_UNSIGNED( "invertLCD", 1 ),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "pwrOffIfInactive", 8 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
+1
View File
@@ -342,6 +342,7 @@ const char STR_SPLASHSCREEN[] = TR_SPLASHSCREEN;
const char STR_PLAY_HELLO[] = TR_PLAY_HELLO;
const char STR_PWR_ON_DELAY[] = TR_PWR_ON_DELAY;
const char STR_PWR_OFF_DELAY[] = TR_PWR_OFF_DELAY;
const char STR_PWR_AUTO_OFF[] = TR_PWR_AUTO_OFF;
const char STR_THROTTLE_UPPERCASE[] = TR_THROTTLE_UPPERCASE;
const char STR_SWITCHWARNING[] = TR_SWITCHWARNING;
const char STR_POTWARNINGSTATE[] = TR_POTWARNINGSTATE;
+1
View File
@@ -417,6 +417,7 @@ extern const char* const STR_SPLASHSCREEN_DELAYS[];
#if defined(PWR_BUTTON_PRESS)
extern const char STR_PWR_ON_DELAY[];
extern const char STR_PWR_OFF_DELAY[];
extern const char STR_PWR_AUTO_OFF[];
extern const char* const STR_PWR_OFF_DELAYS[];
#endif
#if defined(HAPTIC)
+1
View File
@@ -391,6 +391,7 @@
#define TR_PLAY_HELLO "开机语音"
#define TR_PWR_ON_DELAY "开机延迟"
#define TR_PWR_OFF_DELAY "关机延迟"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("开关机震动","开关机震动提示")
#define TR_THROTTLE_WARNING TR("油门状态", "油门状态")
#define TR_CUSTOM_THROTTLE_WARNING TR("自定位置", "自定油门位置?")
+1
View File
@@ -407,6 +407,7 @@
#define TR_PLAY_HELLO "Zvuk při spuštění"
#define TR_PWR_ON_DELAY "Zpoždění zapnutí"
#define TR_PWR_OFF_DELAY "Zpoždění vypnutí"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Zap ON/OFF vibrace","Zapnutí ON/OFF vibrace")
#define TR_THROTTLE_WARNING TR("* Plyn", "Kontrola plynu")
#define TR_CUSTOM_THROTTLE_WARNING TR("Vlas-Poz", "Vlastní pozice?")
+1
View File
@@ -400,6 +400,7 @@
#define TR_PLAY_HELLO "Startop lyd"
#define TR_PWR_ON_DELAY "Forsinkelse ved tænd"
#define TR_PWR_OFF_DELAY "Forsinkelse ved sluk"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Vib. strøm til/fra","Vibrator strøm til/fra")
#define TR_THROTTLE_WARNING TR("Gas adv", "Gas advarsel")
#define TR_CUSTOM_THROTTLE_WARNING TR("Tilp-Pos", "Tilpasset position?")
+1
View File
@@ -397,6 +397,7 @@
#define TR_PLAY_HELLO "Startton abspielen"
#define TR_PWR_ON_DELAY "PWR EIN Verzög."
#define TR_PWR_OFF_DELAY "PWR AUS Verzög."
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Pwr AN/AUS Haptik","Power AN/AUS Haptik")
#define TR_THROTTLE_WARNING TR("Gasalarm", "Gas Alarm")
#define TR_CUSTOM_THROTTLE_WARNING TR("Cust-Pos", "Custom position?")
+1
View File
@@ -393,6 +393,7 @@
#define TR_PLAY_HELLO "Startup Sound"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Pwr ON/OFF Haptic","Power ON/OFF Haptic")
#define TR_THROTTLE_WARNING TR("T-Warning", "Throttle state")
#define TR_CUSTOM_THROTTLE_WARNING TR("Cust-Pos", "Custom position?")
+1
View File
@@ -393,6 +393,7 @@
#define TR_PLAY_HELLO "Startup Sound"
#define TR_PWR_ON_DELAY TR("Atraso On", "Atraso encendido")
#define TR_PWR_OFF_DELAY TR("Atraso Off", "Atraso apagado")
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Pwr ON/OFF Haptic","Power ON/OFF Haptic")
#define TR_THROTTLE_WARNING TR("Aviso-A", "Aviso acelerador")
#define TR_CUSTOM_THROTTLE_WARNING TR("Cust-Pos", "Custom position?")
+1
View File
@@ -407,6 +407,7 @@
#define TR_PLAY_HELLO "Startup Sound"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Pwr ON/OFF Haptic","Power ON/OFF Haptic")
#define TR_THROTTLE_WARNING TR("T-Warning", "Throttle Warning")
#define TR_CUSTOM_THROTTLE_WARNING TR("Cust-Pos", "Custom position?")
+1
View File
@@ -401,6 +401,7 @@
#define TR_PLAY_HELLO "Son de démarrage"
#define TR_PWR_ON_DELAY "Délai btn ON"
#define TR_PWR_OFF_DELAY "Délai btn OFF"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Pwr ON/OFF Vibreur","Power ON/OFF Vibreur")
#define TR_THROTTLE_WARNING TR("Alerte gaz", "Alerte gaz")
#define TR_CUSTOM_THROTTLE_WARNING TR("Pos. Perso", "Position perso ?")
+1
View File
@@ -399,6 +399,7 @@
#define TR_PLAY_HELLO "צליל אתחול"
#define TR_PWR_ON_DELAY "השהיית הפעלה פעיל"
#define TR_PWR_OFF_DELAY "משך לחיצה לכיבוי השלט"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Pwr ON/OFF Haptic","Power ON/OFF Haptic")
#define TR_THROTTLE_WARNING TR("T-Warning", "התראת מצערת פתוחה")
#define TR_CUSTOM_THROTTLE_WARNING TR("Cust-Pos", "עריכת מיקום ידנית")
+1
View File
@@ -395,6 +395,7 @@
#define TR_PLAY_HELLO "Suono all'accensione"
#define TR_PWR_ON_DELAY "Rit. accens."
#define TR_PWR_OFF_DELAY "Rit. spegni."
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Vibraz. Pwr ON/OFF","Vibrazione Pwr ON/OFF")
#define TR_THROTTLE_WARNING TR("All. Mot.", "Allarme Motore")
#define TR_CUSTOM_THROTTLE_WARNING TR("Cust-Pos", "Custom position?")
+1
View File
@@ -394,6 +394,7 @@
#define TR_PLAY_HELLO "起動時サウンド"
#define TR_PWR_ON_DELAY "電源ON遅延"
#define TR_PWR_OFF_DELAY "電源OFF遅延"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Pwr ON/OFF Haptic","電源 ON/OFF 時のバイブ")
#define TR_THROTTLE_WARNING TR("T-Warning", "Throttle状態")
#define TR_CUSTOM_THROTTLE_WARNING TR("Cust-Pos", "カスタム位置?")
+1
View File
@@ -393,6 +393,7 @@
#define TR_PLAY_HELLO "Startup Sound"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Pwr ON/OFF Haptic","Power ON/OFF Haptic")
#define TR_THROTTLE_WARNING TR("T-Warning", "Throttle Status")
#define TR_CUSTOM_THROTTLE_WARNING TR("Cust-Pos", "Custom position?")
+1
View File
@@ -392,6 +392,7 @@
#define TR_PLAY_HELLO "Dźwięk uruchomienia"
#define TR_PWR_ON_DELAY "Pwr On delay"
#define TR_PWR_OFF_DELAY "Pwr Off delay"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Wibracja włączania","Wibracja włączania")
#define TR_THROTTLE_WARNING TR("OstrzGaz", "OstrzeżenieGaz")
#define TR_CUSTOM_THROTTLE_WARNING TR("InnePoł", "Inne położenie?")
+1
View File
@@ -398,6 +398,7 @@
#define TR_PLAY_HELLO "Som ao ligar"
#define TR_PWR_ON_DELAY "Delay para LIGA"
#define TR_PWR_OFF_DELAY "Delay para DESL"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Vibra ao LIG/DESL", "Vibrar ao Lig/Desl")
#define TR_THROTTLE_WARNING TR("A-Aceler.", "Pos do acelerador")
#define TR_CUSTOM_THROTTLE_WARNING TR("Cust-Pos", "Custom position?")
+1
View File
@@ -407,6 +407,7 @@
#define TR_PLAY_HELLO "Startljud"
#define TR_PWR_ON_DELAY "Fördröj start"
#define TR_PWR_OFF_DELAY "Fördröj avslut"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("Tx AV/PÅ vibr.","Radio AV/PÅ vibration")
#define TR_BLCOLOR "Färg"
#define TR_THROTTLE_WARNING TR("Gasvarn.", "Gasvarning")
+1
View File
@@ -396,6 +396,7 @@
#define TR_PLAY_HELLO "開機語音"
#define TR_PWR_ON_DELAY "開機延遲"
#define TR_PWR_OFF_DELAY "關機延遲"
#define TR_PWR_AUTO_OFF TR("Pwr Auto Off","Power Auto Off")
#define TR_PWR_ON_OFF_HAPTIC TR("開關機震動","開關機震動提示")
#define TR_THROTTLE_WARNING TR("油門狀態", "油門狀態")
#define TR_CUSTOM_THROTTLE_WARNING TR("自定位置", "自定油門位置?")