Merge with latest changes from 2.3

This commit is contained in:
Bertrand Songis
2019-03-16 14:29:18 +01:00
27 changed files with 414 additions and 27 deletions
+20
View File
@@ -1486,3 +1486,23 @@ Lee Bennett
Morgantech
Marek Přikryl
Peter Scott
Ernst Camenzind
Steve Robbins
Jean Noel Berlan
Walter Szempruch
Petr Kysela
Gerhard Zdzuj
Joseph S Robinson
Zdenek Trojanek
Fred Page
Burt Pickard-Richardson
Eric Destrebecq
Derek Quigley
Lionel Lunan
Paul Dittman
Justin Delaire
Damir Pooshs
Alvin Burke
Pete Rathbun
Christophe Molliex
Ulf Hedlund
+285
View File
@@ -0,0 +1,285 @@
---- #########################################################################
---- # #
---- # Copyright (C) OpenTX #
-----# #
---- # License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html #
---- # #
---- # This program is free software; you can redistribute it and/or modify #
---- # it under the terms of the GNU General Public License version 2 as #
---- # published by the Free Software Foundation. #
---- # #
---- # This program is distributed in the hope that it will be useful #
---- # but WITHOUT ANY WARRANTY; without even the implied warranty of #
---- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
---- # GNU General Public License for more details. #
---- # #
---- #########################################################################
local version = "v1.2"
local VALUE = 0
local COMBO = 1
local FLPOI = 2
local edit = false
local page = 1
local current = 1 --row
local refreshState = 0
local refreshIndex = 0
local refreshIndex3 = 0
local pageOffset = 0
local pages = {}
local fields = {}
local modifications = {}
local thistime = getTime()
local lastTime = thistime
local margin = 1
local spacing = 8
local configFields = {}
local counter = 0
local function drawScreenTitle(title,page, pages)
if math.fmod(math.floor(getTime()/100),10) == 0 then
title = version
end
if LCD_W == 480 then
lcd.drawFilledRectangle(0, 0, LCD_W, 30, TITLE_BGCOLOR)
lcd.drawText(1, 5, title, MENU_TITLE_COLOR)
lcd.drawText(LCD_W-40, 5, page.."/"..pages, MENU_TITLE_COLOR)
else
lcd.drawScreenTitle(title, page, pages)
end
end
local settingsFields = {
{"SBEC OUTPUT (V)", VALUE, 0x80, nil, 50, 84 },
--{"Physical ID", VALUE, 0x01, nil, 0, 26 },
--{"Application IDgroup", VALUE, 0x0D, nil, 0, 15 },
--{"Data rate(*100ms)", VALUE, 0x22, nil, 1, 255 },
}
-- Change display attribute to current field
local function addField(step)
local field = fields[current]
local min, max
if field[2] == VALUE then
min = field[5]
max = field[6]
elseif field[2] == COMBO then
min = 0
max = #(field[5]) - 1
end
if field[2] ~= FLPOT then --only read ?
if field[2] == VALUE and field[6] > 256 then
if field[4] > 1000 then
step = step * 50
field[4] = math.floor(field[4]/50)
field[4] = field[4] *50
elseif field[4] > 500 then
step = step * 20
field[4] = math.floor(field[4]/20)
field[4] = field[4] *20
elseif field[4] > 200 then
step = step * 10
field[4] = math.floor(field[4]/10)
field[4] = field[4] *10
else
step = step * 1
field[4] = math.floor(field[4]/1)
field[4] = field[4] *1
end
end
if (step < 0 and field[4] > min) or (step > 0 and field[4] < max) then
field[4] = field[4] + step
end
else
field[4] = field[4]
end
end
-- Select the next or previous editable field
local function selectField(step)
current = current + step
if current > #fields then
current = #fields
elseif current < 1 then
current = 1
end
if current > 7 + pageOffset then
pageOffset = current - 7
elseif current <= pageOffset then
pageOffset = current - 1
end
end
local function drawProgressBar()
if LCD_W == 480 then
local width = (300 * refreshIndex) / #fields
lcd.drawRectangle(100, 10, 300, 6)
lcd.drawFilledRectangle(102, 13, width, 2);
else
local width = (60 * refreshIndex) / #fields
lcd.drawRectangle(45, 1, 60, 6)
lcd.drawFilledRectangle(47, 3, width, 2);
end
end
-- Redraw the current page
local function redrawFieldsPage()
lcd.clear()
drawScreenTitle("SBEC", page, #pages)
if refreshIndex < #fields then
drawProgressBar()
end
for index = 1, 7, 1 do
local field = fields[pageOffset+index]
if field == nil then
break
end
local attr = current == (pageOffset+index) and ((edit == true and BLINK or 0) + INVERS) or 0
lcd.drawText(1, margin+ spacing * index, field[1])
if field[4] == nil then
lcd.drawText(LCD_W, margin+ spacing * index, "---", attr + RIGHT)
else
if field[2] == VALUE then
if field[3] == 0x80 then
lcd.drawNumber(LCD_W, margin+ spacing * index, field[4] , attr + RIGHT + PREC1)
else
lcd.drawNumber(LCD_W, margin+ spacing * index, field[4] , attr + RIGHT)
end
end
end
end
end
local function telemetryRead(fieldx)
return sportTelemetryPush(0x08, 0x30, 0x0e50, fieldx)
end
local function telemetryIdle(field)
return sportTelemetryPush(0x08,0x21,0x0e50,field)
end
local function telemetryUnIdle(field)
return sportTelemetryPush(0x08,0x20,0x0e50,field)
end
local function telemetryWrite(fieldx, valuex)
return sportTelemetryPush(0x08, 0x31, 0x0e50, fieldx + valuex*256)
end
local telemetryPopTimeout = 0
local function refreshNext()
if refreshState == 0 then
if #modifications > 0 then
local modificationstmp = modifications[1][2]
telemetryWrite(modifications[1][1], modificationstmp)
refreshIndex = 0
modifications[1] = nil
elseif refreshIndex < #fields then
local field = fields[refreshIndex + 1]
if telemetryRead(field[3]) == true then
refreshState = 1
telemetryPopTimeout = getTime() + 80
end
end
elseif refreshState == 1 then
local physicalId, primId, dataId, value = sportTelemetryPop()
if primId == 0x32 and dataId >= 0x0e50 and dataId <= 0x0e5f then
local fieldId = value % 256
local field = fields[refreshIndex + 1]
if fieldId == field[3] then
local value = math.floor(value / 256)
if field[2] == VALUE then
value = value
end
fields[refreshIndex + 1][4] = value
refreshIndex = refreshIndex + 1
refreshState = 0
end
elseif getTime() > telemetryPopTimeout then
refreshState = 0
end
end
end
local function updateField(field)
local value = field[4]
if field[2] == VALUE and #field == 6 then
value = value
end
modifications[#modifications+1] = {field[3], value}
end
-- Main1
local function runFieldsPage(event)
if event == EVT_EXIT_BREAK then
telemetryUnIdle(0x80)
return 2
elseif event == EVT_ENTER_BREAK or event == EVT_ROT_BREAK then
if fields[current][4] ~= nil then
edit = not edit
if edit == false then
updateField(fields[current])
end
end
elseif edit then
if event == EVT_PLUS_FIRST or event == EVT_ROT_RIGHT or event == EVT_PLUS_REPT or event == EVT_RIGHT_FIRST then
addField(1)
elseif event == EVT_MINUS_FIRST or event == EVT_ROT_LEFT or event == EVT_MINUS_REPT or event == EVT_LEFT_FIRST then
addField(-1)
end
else
if event == EVT_MINUS_FIRST or event == EVT_ROT_RIGHT or event == EVT_DOWN_FIRST then
selectField(1)
elseif event == EVT_PLUS_FIRST or event == EVT_ROT_LEFT or event == EVT_UP_FIRST then
selectField(-1)
end
end
redrawFieldsPage()
return 0
end
local function runSettingsPage(event)
fields = settingsFields
return runFieldsPage(event)
end
-- Init
local function init()
current, edit, refreshState, refreshIndex = 1, false, 0, 0
if LCD_W == 480 then
margin = 10
spacing = 20
end
pages = {
runSettingsPage,
}
telemetryIdle(0x80)
end
local function run(event)
if event == nil then
error("Cannot run as a model script!")
return 2
elseif event == EVT_PAGE_BREAK or event == EVT_PAGEDN_FIRST or event == EVT_SHIFT_BREAK then
--selectPage(1)
elseif event == EVT_PAGE_LONG or event == EVT_PAGEUP_FIRST or event == EVT_SHIFT_LONG then
--killEvents(event);
--selectPage(-1)
end
local result = pages[page](event)
refreshNext()
return result
end
return { init=init, background=background, run=run }
-6
View File
@@ -86,13 +86,10 @@ enum MenuRadioIndexes
MENU_RADIO_SPECIAL_FUNCTIONS,
MENU_RADIO_TRAINER,
MENU_RADIO_VERSION,
MENU_RADIO_SWITCHES_TEST,
MENU_RADIO_ANALOGS_TEST,
MENU_RADIO_HARDWARE,
#if defined(RADIO_SPECTRUM)
MENU_RADIO_SPECTRUM,
#endif
MENU_RADIO_CALIBRATION,
MENU_RADIO_PAGES_COUNT
};
@@ -113,13 +110,10 @@ static const MenuHandlerFunc menuTabGeneral[] = {
menuRadioSpecialFunctions,
menuRadioTrainer,
menuRadioVersion,
menuRadioDiagKeys,
menuRadioDiagAnalogs,
menuRadioHardware,
#if defined(RADIO_SPECTRUM)
menuRadioSpectrum,
#endif
menuRadioCalibration
};
enum MenuModelIndexes {
@@ -268,7 +268,13 @@ void menuModelLogicalSwitches(event_t event)
POPUP_MENU_ADD_ITEM(STR_PASTE);
if (cs->func || cs->v1 || cs->v2 || cs->delay || cs->duration || cs->andsw)
POPUP_MENU_ADD_ITEM(STR_CLEAR);
POPUP_MENU_START(onLogicalSwitchesMenu);
if(popupMenuNoItems == 1) {
popupMenuNoItems = 0;
s_currIdx = sub;
pushMenu(menuModelLogicalSwitchOne);
}
else
POPUP_MENU_START(onLogicalSwitchesMenu);
}
for (uint8_t i=0; i<LCD_LINES-1; i++) {
+1 -1
View File
@@ -172,7 +172,7 @@ void menuCommonCalib(event_t event)
void menuRadioCalibration(event_t event)
{
check_simple(event, MENU_RADIO_CALIBRATION, menuTabGeneral, DIM(menuTabGeneral), 0);
check_submenu_simple(event, 0);
TITLE(STR_MENUCALIBRATION);
menuCommonCalib(READ_ONLY() ? 0 : event);
if (menuEvent) {
+1 -1
View File
@@ -31,7 +31,7 @@ void menuRadioDiagAnalogs(event_t event)
#define ANAS_ITEMS_COUNT 1
#endif
SIMPLE_MENU(STR_MENU_RADIO_ANALOGS, menuTabGeneral, MENU_RADIO_ANALOGS_TEST, HEADER_LINE+ANAS_ITEMS_COUNT);
SIMPLE_SUBMENU(STR_MENU_RADIO_ANALOGS, HEADER_LINE+ANAS_ITEMS_COUNT);
for (uint8_t i=0; i<NUM_STICKS+NUM_POTS+NUM_SLIDERS; i++) {
#if (NUM_STICKS+NUM_POTS+NUM_SLIDERS) > 9
+1 -1
View File
@@ -36,7 +36,7 @@ void displaySwitchState(uint8_t x, uint8_t y, uint8_t sw)
void menuRadioDiagKeys(event_t event)
{
SIMPLE_MENU(STR_MENU_RADIO_SWITCHES, menuTabGeneral, MENU_RADIO_SWITCHES_TEST, 1);
SIMPLE_SUBMENU(STR_MENU_RADIO_SWITCHES, 1);
lcdDrawText(14*FW, MENU_HEADER_HEIGHT+2*FH, STR_VTRIM);
+21 -3
View File
@@ -129,6 +129,7 @@ enum MenuRadioHardwareItems {
#endif
ITEM_RADIO_HARDWARE_JITTER_FILTER,
ITEM_RADIO_OWNER_ID,
ITEM_RADIO_HARDWARE_DEBUG,
ITEM_RADIO_HARDWARE_MAX
};
@@ -181,11 +182,12 @@ void menuRadioHardware(event_t event)
LABEL(Switches),
SWITCHES_ROWS,
#if defined(CROSSFIRE) && SPORT_MAX_BAUDRATE < 400000
0 /*max bauds*/,
0 /* max bauds */,
#endif
BLUETOOTH_ROWS
0 /*jitter filter*/,
0 /*owner id*/
0 /* jitter filter */,
0 /* owner id */,
1 /* debugs */
});
uint8_t sub = menuVerticalPosition - HEADER_LINE;
@@ -203,6 +205,10 @@ void menuRadioHardware(event_t event)
switch(k) {
case ITEM_RADIO_HARDWARE_LABEL_STICKS:
lcdDrawTextAlignedLeft(y, STR_STICKS);
lcdDrawText(HW_SETTINGS_COLUMN2, y, STR_CALIB_BTN, attr);
if (attr && event == EVT_KEY_FIRST(KEY_ENTER)) {
pushMenu(menuRadioCalibration);
}
break;
case ITEM_RADIO_HARDWARE_STICK1:
case ITEM_RADIO_HARDWARE_STICK2:
@@ -325,6 +331,18 @@ void menuRadioHardware(event_t event)
case ITEM_RADIO_OWNER_ID:
editSingleName(HW_SETTINGS_COLUMN2, y, STR_OWNER_ID, g_eeGeneral.ownerRegistrationID, PXX2_LEN_REGISTRATION_ID, event, attr);
break;
case ITEM_RADIO_HARDWARE_DEBUG:
lcdDrawTextAlignedLeft(y, STR_DEBUG);
lcdDrawText(HW_SETTINGS_COLUMN2, y, STR_ANALOGS_BTN, menuHorizontalPosition == 0 ? attr : 0);
lcdDrawText(lcdLastRightPos + 2, y, STR_SWITCHES_BTN, menuHorizontalPosition == 1 ? attr : 0);
if (attr && event == EVT_KEY_FIRST(KEY_ENTER)) {
if (menuHorizontalPosition == 0)
pushMenu(menuRadioDiagAnalogs);
else
pushMenu(menuRadioDiagKeys);
}
break;
}
}
}
+2 -5
View File
@@ -2,7 +2,7 @@
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
@@ -26,10 +26,7 @@ const MenuHandlerFunc menuTabGeneral[] = {
menuRadioSpecialFunctions,
menuRadioTrainer,
menuRadioVersion,
menuRadioDiagKeys,
menuRadioDiagAnalogs,
menuRadioHardware,
menuRadioCalibration
menuRadioHardware
};
void menuRadioSpecialFunctions(event_t event)
-3
View File
@@ -76,10 +76,7 @@ enum MenuRadioIndexes {
MENU_RADIO_SPECIAL_FUNCTIONS,
MENU_RADIO_TRAINER,
MENU_RADIO_VERSION,
MENU_RADIO_SWITCHES_TEST,
MENU_RADIO_ANALOGS_TEST,
MENU_RADIO_HARDWARE,
MENU_RADIO_CALIBRATION,
MENU_RADIO_PAGES_COUNT
};
+2 -2
View File
@@ -2,7 +2,7 @@
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
@@ -195,7 +195,7 @@ void menuCommonCalib(event_t event)
void menuRadioCalibration(event_t event)
{
check_simple(STR_MENUCALIBRATION, event, MENU_RADIO_CALIBRATION, menuTabGeneral, DIM(menuTabGeneral), 0);
check_submenu_simple(STR_MENUCALIBRATION, event, 0);
menuCommonCalib(READ_ONLY() ? 0 : event);
if (menuEvent) {
menuCalibrationState = CALIB_START;
+1 -1
View File
@@ -22,7 +22,7 @@
void menuRadioDiagAnalogs(event_t event)
{
SIMPLE_MENU(STR_MENU_RADIO_ANALOGS, menuTabGeneral, MENU_RADIO_ANALOGS_TEST, 0);
SIMPLE_SUBMENU(STR_MENU_RADIO_ANALOGS, 0);
for (uint8_t i=0; i<NUM_STICKS+NUM_POTS+NUM_SLIDERS; i++) {
coord_t y = MENU_HEADER_HEIGHT + 1 + (i/2)*FH;
+2 -2
View File
@@ -2,7 +2,7 @@
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
@@ -28,7 +28,7 @@ void displayKeyState(uint8_t x, uint8_t y, uint8_t key)
void menuRadioDiagKeys(event_t event)
{
SIMPLE_MENU(STR_MENU_RADIO_SWITCHES, menuTabGeneral, MENU_RADIO_SWITCHES_TEST, 1);
SIMPLE_SUBMENU(STR_MENU_RADIO_SWITCHES, 1);
lcdDrawText(14*FW, MENU_HEADER_HEIGHT+2*FH, STR_VTRIM);
+19 -1
View File
@@ -60,6 +60,7 @@ enum menuRadioHwItems {
#endif
ITEM_RADIO_HARDWARE_UART3_MODE,
ITEM_RADIO_HARDWARE_JITTER_FILTER,
ITEM_RADIO_HARDWARE_DEBUG,
ITEM_RADIO_HARDWARE_MAX
};
@@ -90,7 +91,7 @@ enum menuRadioHwItems {
void menuRadioHardware(event_t event)
{
MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX, { LABEL(Sticks), 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), SWITCHES_ROWS, BLUETOOTH_ROWS 0 });
MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX, { 0, 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), SWITCHES_ROWS, BLUETOOTH_ROWS 0, 1 });
uint8_t sub = menuVerticalPosition;
@@ -105,6 +106,10 @@ void menuRadioHardware(event_t event)
switch (k) {
case ITEM_RADIO_HARDWARE_LABEL_STICKS:
lcdDrawTextAlignedLeft(y, STR_STICKS);
lcdDrawText(HW_SETTINGS_COLUMN, y, STR_CALIB_BTN, attr);
if (attr && event == EVT_KEY_FIRST(KEY_ENTER)) {
pushMenu(menuRadioCalibration);
}
break;
case ITEM_RADIO_HARDWARE_STICK1:
case ITEM_RADIO_HARDWARE_STICK2:
@@ -233,6 +238,19 @@ void menuRadioHardware(event_t event)
g_eeGeneral.jitterFilter = 1 - editCheckBox(b, HW_SETTINGS_COLUMN, y, STR_JITTER_FILTER, attr, event);
break;
}
case ITEM_RADIO_HARDWARE_DEBUG:
lcdDrawTextAlignedLeft(y, STR_DEBUG);
lcdDrawText(HW_SETTINGS_COLUMN
, y, STR_ANALOGS_BTN, menuHorizontalPosition == 0 ? attr : 0);
lcdDrawText(lcdLastRightPos + 2, y, STR_SWITCHES_BTN, menuHorizontalPosition == 1 ? attr : 0);
if (attr && event == EVT_KEY_FIRST(KEY_ENTER)) {
if (menuHorizontalPosition == 0)
pushMenu(menuRadioDiagAnalogs);
else
pushMenu(menuRadioDiagKeys);
}
break;
}
}
}
+4
View File
@@ -463,6 +463,10 @@ const char STR_SUBTYPE[] = TR_SUBTYPE;
#endif
const char STR_RESET_BTN[] = TR_RESET_BTN;
const char STR_DEBUG[] = TR_DEBUG;
const char STR_SWITCHES_BTN[] = TR_SWITCHES_BTN;
const char STR_ANALOGS_BTN[] = TR_ANALOGS_BTN;
const char STR_CALIB_BTN[] = TR_CALIB_BTN;
#if defined(SDCARD)
const char STR_BACKUP_MODEL[] = TR_BACKUP_MODEL;
+4
View File
@@ -662,6 +662,10 @@ extern const char STR_PERSISTENT_MAH[];
#endif
extern const char STR_RESET_BTN[];
extern const char STR_DEBUG[];
extern const char STR_SWITCHES_BTN[];
extern const char STR_ANALOGS_BTN[];
extern const char STR_CALIB_BTN[];
#if defined(SDCARD)
extern const char STR_BACKUP_MODEL[];
+4
View File
@@ -972,6 +972,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN BUTTON("Reset")
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET BUTTON("Volby")
#define TR_TRAINER "Trenér"
#define TR_ANTENNAPROBLEM CENTER "Problém s TX anténou!"
+4
View File
@@ -977,6 +977,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN BUTTON("Reset")
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET BUTTON("Set")
#define TR_TRAINER "DSC Buchse PPM In/Out"
#define TR_ANTENNAPROBLEM CENTER "TX-Antennenproblem!"
+4
View File
@@ -976,6 +976,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN BUTTON("Reset")
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET BUTTON("Set")
#define TR_TRAINER "Trainer"
#define TR_ANTENNAPROBLEM CENTER "TX antenna problem!"
+4
View File
@@ -983,6 +983,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN "[Reset]"
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET "[Ajuste]"
#define TR_TRAINER "Aprendiz"
#define TR_ANTENNAPROBLEM CENTER "¡Problema antena TX!"
+4
View File
@@ -975,6 +975,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN "[Reset]"
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET "[Set]"
#define TR_TRAINER "Trainer"
#define TR_ANTENNAPROBLEM CENTER "TX Antenna problem!"
+4
View File
@@ -987,6 +987,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN BUTTON("RAZ")
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET BUTTON("Déf")
#define TR_TRAINER "Ecolage"
#define TR_ANTENNAPROBLEM CENTER "Antenne radio défectueuse!"
+4
View File
@@ -977,6 +977,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN "[Reset]"
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET "[Set]"
#define TR_TRAINER TR("Trainer","Maestro/Allievo")
#define TR_ANTENNAPROBLEM CENTER "Problemi antenna TX!"
+4
View File
@@ -978,6 +978,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN "[Reset]"
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET "[Set]"
#define TR_TRAINER "Trainer Poort"
#define TR_ANTENNAPROBLEM CENTER "TX-Antenneprobleem!"
+4
View File
@@ -978,6 +978,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN "[Reset]"
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET "[Set]"
#define TR_TRAINER "Port Trenera"
#define TR_ANTENNAPROBLEM CENTER "Problem z anteną TX"
+4
View File
@@ -982,6 +982,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN "[Reset]"
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET "[Set]"
#define TR_TRAINER "Trainer"
#define TR_ANTENNAPROBLEM CENTER "TX Antenna problem!"
+4
View File
@@ -991,6 +991,10 @@
#define TR_RECEIVER_OPTIONS TR("REC. OPTIONS", "RECEIVER OPTIONS")
#define TR_DEL_BUTTON BUTTON(TR("Del", "Delete"))
#define TR_RESET_BTN "[Nollställ]"
#define TR_DEBUG "Debug"
#define TR_SWITCHES_BTN BUTTON(TR("SW","Switches"))
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
#define TR_CALIB_BTN BUTTON("Calibration")
#define TR_SET "[Spara]"
#define TR_TRAINER "Trainer"
#define TR_ANTENNAPROBLEM CENTER "Fel på TX-antennen"