Merge with latest changes from 2.3
This commit is contained in:
+20
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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,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)
|
||||
|
||||
@@ -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,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;
|
||||
|
||||
@@ -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,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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user