1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-16 04:45:17 +03:00

3djc/rssi poweroff safety (#5126)

Shutdown RSSI Alert
This commit is contained in:
Bertrand Songis 2017-08-01 14:13:25 +02:00 committed by GitHub
parent a7524ba74d
commit 7434e330c8
35 changed files with 1033 additions and 893 deletions

View file

@ -180,6 +180,7 @@ const char * const audioFilenames[] = {
"sensorko",
"servoko",
"rxko",
"modelpwr",
#if defined(PCBSKY9X)
"highmah",
"hightemp",

View file

@ -894,7 +894,8 @@ PACK(struct TrainerData {
NOBACKUP(uint8_t countryCode); \
NOBACKUP(uint8_t imperial:1); \
NOBACKUP(uint8_t jitterFilter:1); /* 0 - active */\
NOBACKUP(uint8_t spareExtraArm:6); \
NOBACKUP(uint8_t rssiPoweroffAlarm:1); \
NOBACKUP(uint8_t spareExtraArm:5); \
NOBACKUP(char ttsLanguage[2]); \
NOBACKUP(int8_t beepVolume:4); \
NOBACKUP(int8_t wavVolume:4); \

View file

@ -293,7 +293,7 @@ void lcdDrawChar(coord_t x, coord_t y, const unsigned char c)
uint8_t getTextWidth(const char * s, uint8_t len, LcdFlags flags)
{
uint8_t width = 0;
while (len--) {
for (int i=0; len==0 || i<len; ++i) {
unsigned char c = (flags & ZCHAR) ? idx2char(*s) : *s;
if (!c) {
break;
@ -1563,15 +1563,18 @@ void lcdDrawHorizontalLine(coord_t x, coord_t y, coord_t w, uint8_t pat, LcdFlag
}
#if defined(PWR_PRESS_BUTTON)
void drawShutdownAnimation(uint32_t index)
void drawShutdownAnimation(uint32_t index, const char * message)
{
lcdClear();
int quarter = index / (PWR_PRESS_SHUTDOWN_DELAY / 5);
for (int i=1; i<=4; i++) {
if ((4 -quarter) >= i) {
if (4 - quarter >= i) {
lcdDrawFilledRect(LCD_W / 2 - 28 + 10 * i, LCD_H / 2 - 3, 6, 6, SOLID, 0);
}
}
if (message) {
lcdDrawText((LCD_W - getTextWidth(message)) / 2, LCD_H-2*FH, message);
}
lcdRefresh();
}
#endif

View file

@ -282,6 +282,10 @@ inline display_t getPixel(uint8_t x, uint8_t y)
const char * writeScreenshot();
void drawShutdownAnimation(uint32_t index);
void drawShutdownAnimation(uint32_t index, const char * message);
#if defined(CPUARM)
uint8_t getTextWidth(const char * s, uint8_t len=0, LcdFlags flags=0);
#endif
#endif // _LCD_H_

View file

@ -88,6 +88,7 @@ enum MenuRadioSetupItems {
ITEM_SETUP_INACTIVITY_ALARM,
ITEM_SETUP_MEMORY_WARNING,
ITEM_SETUP_ALARM_WARNING,
CASE_CPUARM(ITEM_SETUP_RSSI_POWEROFF_ALARM)
IF_ROTARY_ENCODERS(ITEM_SETUP_RE_NAVIGATION)
ITEM_SETUP_BACKLIGHT_LABEL,
ITEM_SETUP_BACKLIGHT_MODE,
@ -140,7 +141,7 @@ void menuRadioSetup(event_t event)
}
#endif
MENU(STR_MENURADIOSETUP, menuTabGeneral, MENU_RADIO_SETUP, HEADER_LINE+ITEM_SETUP_MAX, { HEADER_LINE_COLUMNS CASE_RTCLOCK(2) CASE_RTCLOCK(2) CASE_BATTGRAPH(1) LABEL(SOUND), CASE_AUDIO(0) CASE_BUZZER(0) CASE_VOICE(0) CASE_CPUARM(0) CASE_CPUARM(0) CASE_CPUARM(0) 0, CASE_AUDIO(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, CASE_CAPACITY(0) CASE_PCBSKY9X(0) 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, CASE_CPUARM(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(0) CASE_CPUARM(0) CASE_GPS(0) CASE_PXX(0) CASE_CPUARM(0) CASE_CPUARM(0) IF_FAI_CHOICE(0) CASE_MAVLINK(0) CASE_CPUARM(0) 0, COL_TX_MODE, 0, 1/*to force edit mode*/});
MENU(STR_MENURADIOSETUP, menuTabGeneral, MENU_RADIO_SETUP, HEADER_LINE+ITEM_SETUP_MAX, { HEADER_LINE_COLUMNS CASE_RTCLOCK(2) CASE_RTCLOCK(2) CASE_BATTGRAPH(1) LABEL(SOUND), CASE_AUDIO(0) CASE_BUZZER(0) CASE_VOICE(0) CASE_CPUARM(0) CASE_CPUARM(0) CASE_CPUARM(0) 0, CASE_AUDIO(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, CASE_CAPACITY(0) CASE_PCBSKY9X(0) 0, 0, 0, CASE_CPUARM(0) IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, CASE_CPUARM(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(0) CASE_CPUARM(0) CASE_GPS(0) CASE_PXX(0) CASE_CPUARM(0) CASE_CPUARM(0) IF_FAI_CHOICE(0) CASE_MAVLINK(0) CASE_CPUARM(0) 0, COL_TX_MODE, 0, 1/*to force edit mode*/});
if (event == EVT_ENTRY) {
reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode;
@ -387,6 +388,14 @@ void menuRadioSetup(event_t event)
break;
}
#if defined(CPUARM)
case ITEM_SETUP_RSSI_POWEROFF_ALARM:
{
g_eeGeneral.rssiPoweroffAlarm = editCheckBox(g_eeGeneral.rssiPoweroffAlarm, RADIO_SETUP_2ND_COLUMN, y, STR_RSSISHUTDOWNALARM, attr, event);
break;
}
#endif
#if defined(TX_CAPACITY_MEASUREMENT)
case ITEM_SETUP_CAPACITY_WARNING:
lcdDrawTextAlignedLeft(y, STR_CAPAWARNING);

View file

@ -243,7 +243,7 @@ void lcdDrawChar(coord_t x, coord_t y, const unsigned char c)
uint8_t getTextWidth(const char * s, uint8_t len, LcdFlags flags)
{
uint8_t width = 0;
while (len--) {
for (int i=0; len==0 || i<len; ++i) {
unsigned char c = (flags & ZCHAR) ? idx2char(*s) : *s;
if (!c) {
break;

View file

@ -171,7 +171,7 @@ inline void lcdDrawSquare(coord_t x, coord_t y, coord_t w, LcdFlags att=0)
void lcdInvertLine(int8_t line);
#define lcdInvertLastLine() lcdInvertLine(LCD_LINES-1)
void drawShutdownAnimation(uint32_t index);
void drawShutdownAnimation(uint32_t index, const char * message);
void drawSleepBitmap();
void drawTelemetryTopBar();
@ -206,4 +206,8 @@ inline display_t getPixel(unsigned int x, unsigned int y)
return (y & 1) ? (*p >> 4) : (*p & 0x0F);
}
#if defined(CPUARM)
uint8_t getTextWidth(const char * s, uint8_t len=0, LcdFlags flags=0);
#endif
#endif // _LCD_H_

View file

@ -70,6 +70,7 @@ enum MenuRadioSetupItems {
ITEM_SETUP_INACTIVITY_ALARM,
ITEM_SETUP_MEMORY_WARNING,
ITEM_SETUP_ALARM_WARNING,
ITEM_SETUP_RSSI_POWEROFF_ALARM,
ITEM_SETUP_BACKLIGHT_LABEL,
ITEM_SETUP_BACKLIGHT_MODE,
ITEM_SETUP_BACKLIGHT_DELAY,
@ -115,7 +116,7 @@ void menuRadioSetup(event_t event)
}
#endif
MENU(STR_MENURADIOSETUP, menuTabGeneral, MENU_RADIO_SETUP, ITEM_SETUP_MAX, { 2, 2, 0, 1, LABEL(SOUND), 0, 0, 0, 0, 0, 0, 0, CASE_VARIO(LABEL(VARIO)) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(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_PCBX9E_PCBX9DP(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*/ });
MENU(STR_MENURADIOSETUP, menuTabGeneral, MENU_RADIO_SETUP, ITEM_SETUP_MAX, { 2, 2, 0, 1, LABEL(SOUND), 0, 0, 0, 0, 0, 0, 0, CASE_VARIO(LABEL(VARIO)) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, 0, 0, 0, 0,IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, 0, CASE_PCBX9E_PCBX9DP(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*/ });
if (event == EVT_ENTRY) {
reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode;
@ -343,6 +344,12 @@ void menuRadioSetup(event_t event)
break;
}
case ITEM_SETUP_RSSI_POWEROFF_ALARM:
{
g_eeGeneral.rssiPoweroffAlarm = editCheckBox(g_eeGeneral.rssiPoweroffAlarm, RADIO_SETUP_2ND_COLUMN, y, STR_RSSISHUTDOWNALARM, attr, event);
break;
}
case ITEM_SETUP_INACTIVITY_ALARM:
lcdDrawTextAlignedLeft(y, STR_INACTIVITYALARM);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.inactivityTimer, attr|LEFT);

View file

@ -40,12 +40,15 @@ const pm_uchar bmp_shutdown[] PROGMEM = {
#define SHUTDOWN_BITMAP_WIDTH 60
#define SHUTDOWN_BITMAP_HEIGHT 60
void drawShutdownAnimation(uint32_t index)
void drawShutdownAnimation(uint32_t index, const char * message)
{
index /= (PWR_PRESS_SHUTDOWN_DELAY / 4);
lcdRefreshWait();
lcdClear();
lcdDrawBitmap((LCD_W-SHUTDOWN_BITMAP_WIDTH)/2, (LCD_H-SHUTDOWN_BITMAP_HEIGHT)/2, bmp_shutdown, (3 - index) * SHUTDOWN_BITMAP_WIDTH, SHUTDOWN_BITMAP_WIDTH);
if (message) {
lcdDrawText((LCD_W - getTextWidth(message)) / 2, LCD_H-2*FH, message);
}
lcdRefresh();
}
#endif

View file

@ -22,7 +22,7 @@
#include "opentx.h"
#define RADIO_SETUP_2ND_COLUMN 220
#define RADIO_SETUP_2ND_COLUMN 235
int8_t editSlider(coord_t x, coord_t y, event_t event, int8_t value, int8_t min, int8_t max, LcdFlags attr)
{
@ -59,6 +59,7 @@ enum menuRadioSetupItems {
ITEM_SETUP_INACTIVITY_ALARM,
// ITEM_SETUP_MEMORY_WARNING,
ITEM_SETUP_ALARM_WARNING,
ITEM_SETUP_RSSI_POWEROFF_ALARM,
ITEM_SETUP_BACKLIGHT_LABEL,
ITEM_SETUP_BACKLIGHT_MODE,
ITEM_SETUP_BACKLIGHT_DELAY,
@ -111,7 +112,7 @@ bool menuRadioSetup(event_t event)
LABEL(SOUND), 0, 0, 0, 0, 0, 0, 0,
CASE_VARIO(LABEL(VARIO)) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0)
CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0)
LABEL(ALARMS), 0, 0, 0,
LABEL(ALARMS), 0, 0, 0, 0,
LABEL(BACKLIGHT), 0, 0, 0, 0, 0,
CASE_GPS(LABEL(GPS)) CASE_GPS(0) CASE_GPS(0) CASE_GPS(0)
CASE_PXX(0) 0, 0, FAI_CHOICE_ROW 0, 0, 0, 1/*to force edit mode*/ }); // Country code - Voice Language - Units - Fai choice - Play delay - Chan order - Mode (1 to 4)
@ -348,6 +349,13 @@ bool menuRadioSetup(event_t event)
break;
}
case ITEM_SETUP_RSSI_POWEROFF_ALARM:
{
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_RSSISHUTDOWNALARM);
g_eeGeneral.rssiPoweroffAlarm = editCheckBox(g_eeGeneral.rssiPoweroffAlarm, RADIO_SETUP_2ND_COLUMN, y, attr, event);
break;
}
case ITEM_SETUP_INACTIVITY_ALARM:
lcdDrawText(MENUS_MARGIN_LEFT, y,STR_INACTIVITYALARM);
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.inactivityTimer, attr|LEFT, 0, NULL, "m");

View file

@ -376,7 +376,7 @@ void drawSleepBitmap()
}
#define SHUTDOWN_CIRCLE_DIAMETER 150
void drawShutdownAnimation(uint32_t index)
void drawShutdownAnimation(uint32_t index, const char * message)
{
static uint32_t last_index = 0xffffffff;
static const BitmapBuffer * shutdown = BitmapBuffer::load(getThemePath("shutdown.bmp"));

View file

@ -69,7 +69,7 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int
void drawMenuTemplate(const char * title, uint8_t icon, const uint8_t * icons=NULL, uint32_t options=0);
void drawSplash();
void drawSleepBitmap();
void drawShutdownAnimation(uint32_t index);
void drawShutdownAnimation(uint32_t index, const char * message);
// Main view standard widgets
void drawTopBar();

View file

@ -2740,6 +2740,8 @@ uint32_t pwrPressedDuration()
uint32_t pwrCheck()
{
const char * message = NULL;
enum PwrCheckState {
PWR_CHECK_ON,
PWR_CHECK_OFF,
@ -2752,11 +2754,17 @@ uint32_t pwrCheck()
return e_power_off;
}
else if (pwrPressed()) {
if (TELEMETRY_STREAMING()) {
message = STR_MODEL_STILL_POWERED;
}
if (pwr_check_state == PWR_CHECK_PAUSED) {
// nothing
}
else if (pwr_press_time == 0) {
pwr_press_time = get_tmr10ms();
if (message && g_eeGeneral.rssiPoweroffAlarm) {
audioEvent(AU_MODEL_STILL_POWERED);
}
}
else {
inactivity.counter = 0;
@ -2783,13 +2791,30 @@ uint32_t pwrCheck()
}
}
#else
while ((TELEMETRY_STREAMING() && g_eeGeneral.rssiPoweroffAlarm)) {
lcdRefreshWait();
lcdClear();
POPUP_CONFIRMATION("Confirm Shutdown");
event_t evt = getEvent(false);
DISPLAY_WARNING(evt);
lcdRefresh();
if (warningResult == true) {
pwr_check_state = PWR_CHECK_OFF;
return e_power_off;
}
else if (!warningText) {
// shutdown has been cancelled
pwr_check_state = PWR_CHECK_PAUSED;
return e_power_on;
}
}
haptic.play(15, 3, PLAY_NOW);
pwr_check_state = PWR_CHECK_OFF;
return e_power_off;
#endif
}
else {
drawShutdownAnimation(pwrPressedDuration());
drawShutdownAnimation(pwrPressedDuration(), message);
return e_power_press;
}
}
@ -2805,18 +2830,38 @@ uint32_t pwrCheck()
uint32_t pwrCheck()
{
#if defined(SOFT_PWR_CTRL)
if (pwrPressed())
if (pwrPressed()) {
return e_power_on;
}
#endif
if (usbPlugged())
if (usbPlugged()) {
return e_power_usb;
}
#if defined(TRAINER_PWR)
if (TRAINER_CONNECTED())
if (TRAINER_CONNECTED()) {
return e_power_trainer;
}
#endif
if (g_eeGeneral.rssiPoweroffAlarm) {
if (TELEMETRY_STREAMING()) {
RAISE_ALERT(STR_MODEL, STR_MODEL_STILL_POWERED, STR_PRESS_ENTER_TO_CONFIRM, AU_MODEL_STILL_POWERED);
while (TELEMETRY_STREAMING()) {
#if defined(CPUARM)
CoTickDelay(10);
#endif
if (pwrPressed()) {
return e_power_on;
}
else if (readKeys() == (1 << KEY_ENTER)) {
return e_power_off;
}
}
}
}
return e_power_off;
}
#endif

View file

@ -1231,6 +1231,7 @@ enum AUDIO_SOUNDS {
AU_SENSOR_LOST,
AU_SERVO_KO,
AU_RX_OVERLOAD,
AU_MODEL_STILL_POWERED,
#endif
#if defined(PCBSKY9X)
AU_TX_MAH_HIGH,

View file

@ -49,7 +49,7 @@ int8_t char2idx(char c)
{
if (c == '_') return 37;
#if LEN_SPECIAL_CHARS > 0
if (c < 0 && c+128 <= LEN_SPECIAL_CHARS) return 41 + (c+128);
if ((int8_t)c < 0 && c+128 <= LEN_SPECIAL_CHARS) return 41 + (c+128);
#endif
if (c >= 'a') return 'a' - c - 1;
if (c >= 'A') return c - 'A' + 1;

View file

@ -230,6 +230,9 @@ const pm_char STR_BATTERYWARNING[] PROGMEM = TR_BATTERYWARNING;
const pm_char STR_INACTIVITYALARM[] PROGMEM = TR_INACTIVITYALARM;
const pm_char STR_MEMORYWARNING[] PROGMEM = TR_MEMORYWARNING;
const pm_char STR_ALARMWARNING[] PROGMEM = TR_ALARMWARNING;
const pm_char STR_RSSISHUTDOWNALARM[] PROGMEM = TR_RSSISHUTDOWNALARM;
const pm_char STR_MODEL_STILL_POWERED[] PROGMEM = TR_MODEL_STILL_POWERED;
const pm_char STR_PRESS_ENTER_TO_CONFIRM[] PROGMEM = TR_PRESS_ENTER_TO_CONFIRM;
#if defined(ROTARY_ENCODERS)
const pm_char STR_RENAVIG[] PROGMEM = TR_RENAVIG;
#endif

View file

@ -467,6 +467,9 @@ extern const pm_char STR_BATTERYWARNING[];
extern const pm_char STR_INACTIVITYALARM[];
extern const pm_char STR_MEMORYWARNING[];
extern const pm_char STR_ALARMWARNING[];
extern const pm_char STR_RSSISHUTDOWNALARM[];
extern const pm_char STR_MODEL_STILL_POWERED[];
extern const pm_char STR_PRESS_ENTER_TO_CONFIRM[];
extern const pm_char STR_RENAVIG[];
extern const pm_char STR_THROTTLEREVERSE[];
extern const pm_char STR_TIMER_NAME[];

View file

@ -711,6 +711,9 @@
#define TR_INACTIVITYALARM TR(INDENT "Nečinnost", INDENT "Nečinnost rádia")
#define TR_MEMORYWARNING INDENT"Plná pamět'"
#define TR_ALARMWARNING TR3(INDENT "Vypnutý zvuk", INDENT "Upozornit na vypnutý zvuk", INDENT "Upozornit na vyp. zvuk")
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "Navig. RotEnc"
#define TR_THROTTLE_LABEL "Plyn"
#define TR_THROTTLEREVERSE TR("ReversPlyn", INDENT"Revers plynu")

View file

@ -731,6 +731,9 @@
#define TR_INACTIVITYALARM TR(INDENT "Inaktivität", INDENT "Inaktivität nach") //9XR-Pro
#define TR_MEMORYWARNING INDENT "Speicher voll"
#define TR_ALARMWARNING TR(INDENT "Alle Töne aus?", INDENT "Alle Töne ganz aus?")
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "Drehgeb. Navig."
#define TR_THROTTLE_LABEL "----Gas-Kontrolle----"
#define TR_THROTTLEREVERSE TR("Gas invers", INDENT "Vollgas hinten?") //Änderung wg TH9x, Taranis

View file

@ -714,6 +714,9 @@
#define TR_INACTIVITYALARM INDENT "Inactivity"
#define TR_MEMORYWARNING INDENT "Memory low"
#define TR_ALARMWARNING INDENT "Sound off"
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "RotEnc Navig"
#define TR_THROTTLE_LABEL "Throttle"
#define TR_THROTTLEREVERSE TR("T-Reverse", INDENT "Reverse")

View file

@ -701,6 +701,9 @@
#define TR_INACTIVITYALARM INDENT"Inactividad"
#define TR_MEMORYWARNING INDENT"Memoria Baja"
#define TR_ALARMWARNING INDENT"Sin Sonido"
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "RotEnc Navig"
#define TR_THROTTLE_LABEL "Throttle"
#define TR_THROTTLEREVERSE TR("Invert_Acel", INDENT "Invertir Acel.")

View file

@ -697,6 +697,9 @@
#define TR_INACTIVITYALARM INDENT"Inactivity"
#define TR_MEMORYWARNING INDENT"Memory Low"
#define TR_ALARMWARNING INDENT"Sound Off"
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "RotEnc Navig"
#define TR_THROTTLE_LABEL "Throttle"
#define TR_THROTTLEREVERSE TR("T-Reverse", INDENT "Throttle reverse")

View file

@ -718,6 +718,9 @@
#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_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Modèle encore allumé"
#define TR_PRESS_ENTER_TO_CONFIRM "Presser [Enter] pour confirmer"
#define TR_RENAVIG "Navig EncRot"
#define TR_THROTTLE_LABEL "Gaz"
#define TR_THROTTLEREVERSE TR("Inv. gaz", INDENT "Inversion gaz")
@ -855,7 +858,7 @@
#define TR_MULTI_DSM_AUTODTECT TR(INDENT "Autodét.", INDENT "Autodétection")
#define TR_MULTI_LOWPOWER TR(INDENT "Basse puis.", INDENT "Mode basse puiss.")
#define TR_DISABLE_INTERNAL TR("Désact intRF", "Désact. RF interne")
#define TR_MODULE_NO_SERIAL_MODE TR("Mode série?", "Pas en mode série")
#define TR_MODULE_NO_SERIAL_MOD E TR("Mode série?", "Pas en mode série")
#define TR_MODULE_NO_INPUT TR("Pas de sign.", "Aucun signal série")
#define TR_MODULE_NO_TELEMETRY TR3("Pas de télm.", "Télémétrie absente", "Télémétrie absente(act. MULTI_TELEMETRY)")
#define TR_MODULE_BINDING "Bind..."

View file

@ -716,6 +716,9 @@
#define TR_INACTIVITYALARM INDENT"Inattivita'"
#define TR_MEMORYWARNING INDENT"Avviso memoria"
#define TR_ALARMWARNING INDENT"Spegni suono"
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "Navig EncRot "
#define TR_THROTTLE_LABEL "Motore"
#define TR_THROTTLEREVERSE TR("Mot inv.", INDENT "Motore Inverso")

View file

@ -706,6 +706,9 @@
#define TR_INACTIVITYALARM TR(INDENT "Inactiviteit", INDENT "Inactiviteit na") //9XR-Pro
#define TR_MEMORYWARNING INDENT "Geheugen laag"
#define TR_ALARMWARNING TR(INDENT "Al Geluid uit?", INDENT "Al het geluid uit?")
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "Stappenschakelaar"
#define TR_THROTTLE_LABEL "----Gas-------------"
#define TR_THROTTLEREVERSE TR("Reverse", INDENT "Omgekeerd")

View file

@ -718,6 +718,9 @@
#define TR_INACTIVITYALARM INDENT"Alarm bezczynności"
#define TR_MEMORYWARNING INDENT"Pełna pamięć"
#define TR_ALARMWARNING INDENT"Wyłącz dźwięk"
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "Nawigacja potencjometrem"
#define TR_THROTTLE_LABEL "Gaz "
#define TR_THROTTLEREVERSE TR("OdwrGaz", INDENT "OdwrGaz")

View file

@ -702,6 +702,9 @@
#define TR_INACTIVITYALARM INDENT"Inactividade"
#define TR_MEMORYWARNING INDENT"Memoria Baixa"
#define TR_ALARMWARNING INDENT"Som Off"
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "RotEnc Navig"
#define TR_THROTTLE_LABEL "Throttle"
#define TR_THROTTLEREVERSE TR("Inverte Acel.", INDENT "Inverte Acel.")

View file

@ -729,6 +729,9 @@
#define TR_INACTIVITYALARM INDENT"Inaktivitet"
#define TR_MEMORYWARNING INDENT"Lite Minne"
#define TR_ALARMWARNING INDENT"Ljud Av"
#define TR_RSSISHUTDOWNALARM TR(INDENT "Rssi Shutdown", INDENT "Check Rssi on Shutdown")
#define TR_MODEL_STILL_POWERED "Model still powered"
#define TR_PRESS_ENTER_TO_CONFIRM "Press enter to confirm"
#define TR_RENAVIG "RotEnk Navig"
#define TR_THROTTLE_LABEL "Gas"
#define TR_THROTTLEREVERSE TR("Inv.Gas", INDENT "Inverterad Gas")

View file

@ -78,6 +78,7 @@ for s, f, a in [("střed trimu", "midtrim", 495),
("senzor ztracen", "sensorko", NO_ALTERNATE),
("servo přetíženo", "servoko", NO_ALTERNATE),
("r f přebuzeno", "rxko", NO_ALTERNATE),
("receiver still connected", "modelpwr", NO_ALTERNATE),
]:
systemSounds.append((s, filename(f, a)))
for i, (s, f) in enumerate([("podvozek je zasunut", "podvo0"),

View file

@ -74,6 +74,9 @@ for s, f, a in [("Inaktivitätsalarm", "inactiv", 486),
("Telemetrie wiederhergestellt", "telemok", NO_ALTERNATE),
("Schülersignal verloren", "trainko", NO_ALTERNATE),
("Schülersignal wiederhergestellt", "trainok", NO_ALTERNATE),
("servo overload", "servoko", NO_ALTERNATE),
("power overload", "rxko", NO_ALTERNATE),
("Empfänger noch verbunden", "modelpwr", NO_ALTERNATE),
]:
systemSounds.append((s, filename(f, a)))
for i, s in enumerate(["Uhr", "Uhr", "Sender", "Empfang", "A1", "A2", "Hoehe", "Motor",

View file

@ -68,6 +68,7 @@ for s, f, a in [("trim center", "midtrim", 495),
("sensor lost", "sensorko", NO_ALTERNATE),
("servo overload", "servoko", NO_ALTERNATE),
("power overload", "rxko", NO_ALTERNATE),
("receiver still connected", "modelpwr", NO_ALTERNATE),
]:
systemSounds.append((s, filename(f, a)))
for i, (s, f) in enumerate([("gear!, up!", "gearup"),

View file

@ -74,6 +74,9 @@ for s, f, a in [("me tienes abandonada", "inactiv", 486),
("Problemas con la antena del transmisor", "swr_red", NO_ALTERNATE),
("Sin telemetría", "telemko", NO_ALTERNATE),
("Telemetría disponible", "telemok", NO_ALTERNATE),
("servo overload", "servoko", NO_ALTERNATE),
("power overload", "rxko", NO_ALTERNATE),
("receiver still connected", "modelpwr", NO_ALTERNATE),
]:
systemSounds.append((s, filename(f, a)))
for i, s in enumerate(["cronómetro", "cronómetro", "transmisión", "recepción", "A1", "A2", "altitud", "motor",

View file

@ -67,6 +67,7 @@ for s, f, a in [("Trim centré", "midtrim", 495),
("Sonde de télémétrie perdue", "sensorko", NO_ALTERNATE),
("Servo en surcharge", "servoko", NO_ALTERNATE),
("Surcharge réception", "rxko", NO_ALTERNATE),
("Récepteur encore sous tension", "modelpwr", NO_ALTERNATE),
]:
systemSounds.append((s, filename(f, a)))
for i, (s, f) in enumerate([("altitude", "altitude"),

View file

@ -70,6 +70,9 @@ for s, f, a in [("radio inattiva controllare", "inactiv", 486),
("Problema all'antenna della radio", "swr_red", NO_ALTERNATE),
("Telemetria assente", "telemko", NO_ALTERNATE),
("Telemetria disponibile", "telemok", NO_ALTERNATE),
("servo overload", "servoko", NO_ALTERNATE),
("power overload", "rxko", NO_ALTERNATE),
("receiver still connected", "modelpwr", NO_ALTERNATE),
]:
systemSounds.append((s, filename(f, a)))
for i, s in enumerate(["timer", "", "tensione", "tensione", "trasmissione", "ricezione", "altitudine", "motore",

View file

@ -72,6 +72,9 @@ for s, f, a in [("atenção, o rádio foi esquecido ligado, por favor desligue-o
("recepção de sinal muito baixa", "rssi_org", NO_ALTERNATE),
("recepção de sinal crítica", "rssi_red", NO_ALTERNATE),
("Problema com a antena do transmissor", "swr_red", NO_ALTERNATE),
("servo overload", "servoko", NO_ALTERNATE),
("power overload", "rxko", NO_ALTERNATE),
("receiver still connected", "modelpwr", NO_ALTERNATE),
]:
systemSounds.append((s, filename(f, a)))
for i, s in enumerate(["cronómetro", "cronómetro", "transmissão", "recepção", "A1", "A2", "altitude", "motor",