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

3djc/test combined mixer output mon (#3622)

* Merge outputs and mixers in a single 'bar'
View 8 per page

* Cosmetics

* Add proper icons for channels3 and 4

* Bars colors now fixed by overwhelmingly popular demand

* Fix outL outR display

* Add bottom line description to avoid confusion between outputs and mixers

* Cosmetics

* Typo
This commit is contained in:
3djc 2016-06-22 22:51:11 +02:00 committed by Bertrand Songis
parent 38fdae6f1f
commit 3ee9f56423
21 changed files with 158 additions and 157 deletions

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -96,10 +96,10 @@ enum MenuIcons {
ICON_STATS_ANALOGS, ICON_STATS_ANALOGS,
ICON_STATS_DEBUG, ICON_STATS_DEBUG,
ICON_MONITOR, ICON_MONITOR,
ICON_MONITOR_OUTPUTS1, ICON_MONITOR_CHANNELS1,
ICON_MONITOR_OUTPUTS2, ICON_MONITOR_CHANNELS2,
ICON_MONITOR_MIXERS1, ICON_MONITOR_CHANNELS3,
ICON_MONITOR_MIXERS2, ICON_MONITOR_CHANNELS4,
ICON_MONITOR_LOGICAL_SWITCHES, ICON_MONITOR_LOGICAL_SWITCHES,
MENUS_ICONS_COUNT MENUS_ICONS_COUNT
}; };
@ -162,10 +162,10 @@ const uint8_t STATS_ICONS[] = {
const uint8_t MONITOR_ICONS[] = { const uint8_t MONITOR_ICONS[] = {
ICON_MONITOR, ICON_MONITOR,
ICON_MONITOR_OUTPUTS1, ICON_MONITOR_CHANNELS1,
ICON_MONITOR_OUTPUTS2, ICON_MONITOR_CHANNELS2,
ICON_MONITOR_MIXERS1, ICON_MONITOR_CHANNELS3,
ICON_MONITOR_MIXERS2, ICON_MONITOR_CHANNELS4,
ICON_MONITOR_LOGICAL_SWITCHES ICON_MONITOR_LOGICAL_SWITCHES
}; };
@ -232,10 +232,10 @@ static const MenuHandlerFunc menuTabStats[] PROGMEM = {
enum EnumTabMonitors enum EnumTabMonitors
{ {
e_MonOutputs1, e_MonChannels1,
e_MonOutputs2, e_MonChannels2,
e_MonMixers1, e_MonChannels3,
e_MonMixers2, e_MonChannels4,
e_MonLogicalSwitches, e_MonLogicalSwitches,
e_MonTabChannelsPagesCount e_MonTabChannelsPagesCount
}; };

View file

@ -107,10 +107,10 @@ class DarkblueTheme: public Theme
loadMenuIcon(ICON_THEME_VIEW5, "mask_theme_view5.png"); loadMenuIcon(ICON_THEME_VIEW5, "mask_theme_view5.png");
loadMenuIcon(ICON_THEME_ADD_VIEW, "mask_theme_add_view.png"); loadMenuIcon(ICON_THEME_ADD_VIEW, "mask_theme_add_view.png");
loadMenuIcon(ICON_MONITOR, "mask_monitor.png"); loadMenuIcon(ICON_MONITOR, "mask_monitor.png");
loadMenuIcon(ICON_MONITOR_OUTPUTS1, "mask_monitor_outputs1.png"); loadMenuIcon(ICON_MONITOR_CHANNELS1, "mask_monitor_channels1.png");
loadMenuIcon(ICON_MONITOR_OUTPUTS2, "mask_monitor_outputs2.png"); loadMenuIcon(ICON_MONITOR_CHANNELS2, "mask_monitor_channels2.png");
loadMenuIcon(ICON_MONITOR_MIXERS1, "mask_monitor_mixes1.png"); loadMenuIcon(ICON_MONITOR_CHANNELS3, "mask_monitor_channels3.png");
loadMenuIcon(ICON_MONITOR_MIXERS2, "mask_monitor_mixes2.png"); loadMenuIcon(ICON_MONITOR_CHANNELS4, "mask_monitor_channels4.png");
loadMenuIcon(ICON_MONITOR_LOGICAL_SWITCHES, "/mask_monitor_logsw.png"); loadMenuIcon(ICON_MONITOR_LOGICAL_SWITCHES, "/mask_monitor_logsw.png");
} }

View file

@ -123,10 +123,10 @@ class DefaultTheme: public Theme
loadMenuIcon(ICON_THEME_ADD_VIEW, "mask_theme_add_view.png"); loadMenuIcon(ICON_THEME_ADD_VIEW, "mask_theme_add_view.png");
loadMenuIcon(ICON_LIBRARY, "mask_library.png"); loadMenuIcon(ICON_LIBRARY, "mask_library.png");
loadMenuIcon(ICON_MONITOR, "mask_monitor.png"); loadMenuIcon(ICON_MONITOR, "mask_monitor.png");
loadMenuIcon(ICON_MONITOR_OUTPUTS1, "mask_monitor_outputs1.png"); loadMenuIcon(ICON_MONITOR_CHANNELS1, "mask_monitor_channels1.png");
loadMenuIcon(ICON_MONITOR_OUTPUTS2, "mask_monitor_outputs2.png"); loadMenuIcon(ICON_MONITOR_CHANNELS2, "mask_monitor_channels2.png");
loadMenuIcon(ICON_MONITOR_MIXERS1, "mask_monitor_mixes1.png"); loadMenuIcon(ICON_MONITOR_CHANNELS3, "mask_monitor_channels3.png");
loadMenuIcon(ICON_MONITOR_MIXERS2, "mask_monitor_mixes2.png"); loadMenuIcon(ICON_MONITOR_CHANNELS4, "mask_monitor_channels4.png");
loadMenuIcon(ICON_MONITOR_LOGICAL_SWITCHES, "/mask_monitor_logsw.png"); loadMenuIcon(ICON_MONITOR_LOGICAL_SWITCHES, "/mask_monitor_logsw.png");
BitmapBuffer * background = BitmapBuffer::loadMask(getThemePath("mask_currentmenu_bg.png")); BitmapBuffer * background = BitmapBuffer::loadMask(getThemePath("mask_currentmenu_bg.png"));

View file

@ -21,23 +21,25 @@
#include "opentx.h" #include "opentx.h"
#define RECT_OFFSET 80 #define RECT_OFFSET 80
#define ROW_HEIGHT 21 #define ROW_HEIGHT 42
#define BAR_HEIGHT 10 #define BAR_HEIGHT 14
#define COLUMN_SIZE 180 #define COLUMN_SIZE 200
#define X_OFFSET 30 #define X_OFFSET 25
#define Y_OFFSET 75 #define Y_OFFSET 75
#define Y_OUTBAR 15
#define Y_MIXBAR 28
bool menuOutputs1(evt_t); bool menuChannels1(evt_t);
bool menuOutputs2(evt_t); bool menuChannels2(evt_t);
bool menuMixers1(evt_t); bool menuChannels3(evt_t);
bool menuMixers2(evt_t); bool menuChannels4(evt_t);
bool menuLogicalSwitches(evt_t); bool menuLogicalSwitches(evt_t);
const MenuHandlerFunc menuTabMonitors[] PROGMEM = { const MenuHandlerFunc menuTabMonitors[] PROGMEM = {
menuOutputs1, menuChannels1,
menuOutputs2, menuChannels2,
menuMixers1, menuChannels3,
menuMixers2, menuChannels4,
menuLogicalSwitches menuLogicalSwitches
}; };
@ -51,38 +53,29 @@ uint16_t posOnBar(int16_t value_to100)
void drawSingleMixerBar(coord_t x, coord_t y, uint8_t chan) void drawSingleMixerBar(coord_t x, coord_t y, uint8_t chan)
{ {
char chanString[] = "Ch 32";
int16_t chanVal = calcRESXto100(ex_chans[chan]); int16_t chanVal = calcRESXto100(ex_chans[chan]);
strAppendSigned(&chanString[3], chan + 1, 2);
lcdDrawText(x + X_OFFSET, y + 1, chanString, TINSIZE | TEXT_COLOR | LEFT);
lcdDrawSizedText(x + X_OFFSET + 50, y + 1, g_model.limitData[chan].name, sizeof(g_model.limitData[chan].name), TINSIZE | TEXT_COLOR | LEFT | ZCHAR);
lcdColorTable[CUSTOM_COLOR_INDEX] = RGB(222, 222, 222); lcdColorTable[CUSTOM_COLOR_INDEX] = RGB(222, 222, 222);
lcdDrawSolidFilledRect(x + X_OFFSET, y + 11, COLUMN_SIZE, BAR_HEIGHT, CUSTOM_COLOR); lcdDrawSolidFilledRect(x, y, COLUMN_SIZE, BAR_HEIGHT, CUSTOM_COLOR);
lcd->drawSolidVerticalLine(x + X_OFFSET + posOnBar(chanVal), y + 11, BAR_HEIGHT, HEADER_BGCOLOR); lcd->drawSolidVerticalLine(x + posOnBar(chanVal), y, BAR_HEIGHT, HEADER_BGCOLOR);
strAppendSigned(chanString, chanVal);
lcdDrawText(x + X_OFFSET + COLUMN_SIZE - 2, y + 1, chanString, TINSIZE | TEXT_COLOR | RIGHT);
lcdColorTable[CUSTOM_COLOR_INDEX] = RGB(25, 150, 50); lcdColorTable[CUSTOM_COLOR_INDEX] = RGB(25, 150, 50);
if (chanVal > 0) { if (chanVal > 0) {
lcdDrawSolidFilledRect(x + X_OFFSET + COLUMN_SIZE / 2, y + 11, divRoundClosest(chanVal * COLUMN_SIZE, 200), BAR_HEIGHT, CUSTOM_COLOR); lcdDrawSolidFilledRect(x + COLUMN_SIZE / 2, y, divRoundClosest(chanVal * COLUMN_SIZE, 200), BAR_HEIGHT, CUSTOM_COLOR);
} }
else if (chanVal < 0) { else if (chanVal < 0) {
uint16_t endpoint = x + X_OFFSET + COLUMN_SIZE / 2; uint16_t endpoint = x + COLUMN_SIZE / 2;
uint16_t size = divRoundClosest(-chanVal * COLUMN_SIZE, 200); uint16_t size = divRoundClosest(-chanVal * COLUMN_SIZE, 200);
lcdDrawSolidFilledRect(endpoint - size, y + 11, size, BAR_HEIGHT, CUSTOM_COLOR); lcdDrawSolidFilledRect(endpoint - size, y, size, BAR_HEIGHT, CUSTOM_COLOR);
} }
lcd->drawSolidVerticalLine(x + X_OFFSET + COLUMN_SIZE / 2, y + 11, BAR_HEIGHT, TEXT_COLOR); lcd->drawSolidVerticalLine(x + COLUMN_SIZE / 2, y, BAR_HEIGHT, TEXT_COLOR);
} }
void drawSingleOutputBar(coord_t x, coord_t y, uint8_t channel) void drawSingleOutputBar(coord_t x, coord_t y, uint8_t channel)
{ {
char chanString[] = "Ch 32"; char chanString[] = "Ch32 ";
uint16_t limits = (g_model.extendedLimits ? 300 : 200); uint16_t limits = (g_model.extendedLimits ? 300 : 200);
int16_t chanVal = calcRESXto100(channelOutputs[channel]); int16_t chanVal = calcRESXto100(channelOutputs[channel]);
LimitData * ld = limitAddress(channel); LimitData * ld = limitAddress(channel);
@ -92,103 +85,99 @@ void drawSingleOutputBar(coord_t x, coord_t y, uint8_t channel)
static const BitmapBuffer * outL_bmp = BitmapBuffer::load(getThemePath("mask_monitor_outL.png")); static const BitmapBuffer * outL_bmp = BitmapBuffer::load(getThemePath("mask_monitor_outL.png"));
static const BitmapBuffer * outR_bmp = BitmapBuffer::load(getThemePath("mask_monitor_outR.png")); static const BitmapBuffer * outR_bmp = BitmapBuffer::load(getThemePath("mask_monitor_outR.png"));
strAppendSigned(&chanString[3], channel + 1, 2); strAppendSigned(&chanString[2], channel + 1, 2);
lcdDrawText(x + X_OFFSET, y + 1, chanString, TINSIZE | TEXT_COLOR | LEFT); lcdDrawText(x, y, chanString, SMLSIZE | TEXT_COLOR | LEFT);
lcdDrawSizedText(x + X_OFFSET + 50, y + 1, g_model.limitData[channel].name, sizeof(g_model.limitData[channel].name), TINSIZE | TEXT_COLOR | LEFT | ZCHAR); lcdDrawSizedText(x + 45, y, g_model.limitData[channel].name, sizeof(g_model.limitData[channel].name), SMLSIZE | TEXT_COLOR | LEFT | ZCHAR);
int usValue = PPM_CH_CENTER(channel) + channelOutputs[channel] / 2;
strAppendSigned(chanString, usValue);
if (usValue < 1000) strAppend(&chanString[3], STR_US);
else strAppend(&chanString[4], STR_US);
lcdDrawText(x + 155, y, chanString, SMLSIZE | TEXT_COLOR | RIGHT);
lcdColorTable[CUSTOM_COLOR_INDEX] = RGB(222, 222, 222); lcdColorTable[CUSTOM_COLOR_INDEX] = RGB(222, 222, 222);
lcdDrawSolidFilledRect(x + X_OFFSET, y + 11, COLUMN_SIZE, BAR_HEIGHT, CUSTOM_COLOR); lcdDrawSolidFilledRect(x, y + Y_OUTBAR, COLUMN_SIZE, BAR_HEIGHT, CUSTOM_COLOR);
lcdDrawText(x + X_OFFSET + posOnBar(-100 + ld->min / 10) + 2, y + 10, "]", TINSIZE | TEXT_COLOR | RIGHT); lcdDrawText(x + posOnBar(-100 + ld->min / 10) + 2, y + Y_OUTBAR, "]", TINSIZE | TEXT_COLOR | RIGHT);
lcdDrawText(x + X_OFFSET + posOnBar(100 + ld->max / 10), y + 10, "[", TINSIZE | TEXT_COLOR); lcdDrawText(x + posOnBar(100 + ld->max / 10), y + Y_OUTBAR, "[", TINSIZE | TEXT_COLOR);
lcd->drawSolidVerticalLine(x + X_OFFSET + posOnBar(calcRESXto100(ld->offset)), y + 11, BAR_HEIGHT, MAINVIEW_GRAPHICS_COLOR); lcd->drawSolidVerticalLine(x + posOnBar(calcRESXto100(ld->offset)), y + Y_OUTBAR, BAR_HEIGHT, MAINVIEW_GRAPHICS_COLOR);
lcd->drawSolidVerticalLine(x + X_OFFSET + posOnBar(chanVal), y + 11, BAR_HEIGHT, HEADER_BGCOLOR); lcd->drawSolidVerticalLine(x + posOnBar(chanVal), y + Y_OUTBAR, BAR_HEIGHT, HEADER_BGCOLOR);
strAppendSigned(chanString, chanVal); strAppendSigned(chanString, chanVal);
if (chanVal < -limits / 2) { if (chanVal < -limits / 2) {
lcd->drawBitmap(x + X_OFFSET + COLUMN_SIZE / 2 - 55, y + 8, outL_bmp);
chanVal = -limits / 2; chanVal = -limits / 2;
lcdDrawText(x + X_OFFSET + COLUMN_SIZE - 2, y + 1, chanString, TINSIZE | TEXT_COLOR | RIGHT | INVERS); lcdDrawText(x + COLUMN_SIZE - 2, y + 1, chanString, SMLSIZE | TEXT_COLOR | RIGHT | INVERS);
lcd->drawBitmap(x + COLUMN_SIZE / 2 + 5, y + 16, outL_bmp);
} }
else if (chanVal > limits / 2) { else if (chanVal > limits / 2) {
lcd->drawBitmap(x + X_OFFSET + COLUMN_SIZE / 2 + 55, y + 8, outR_bmp);
chanVal = limits / 2; chanVal = limits / 2;
lcdDrawText(x + X_OFFSET + COLUMN_SIZE - 2, y + 1, chanString, TINSIZE | TEXT_COLOR | RIGHT | INVERS); lcdDrawText(x + COLUMN_SIZE - 2, y + 1, chanString, SMLSIZE | TEXT_COLOR | RIGHT | INVERS);
lcd->drawBitmap(x + COLUMN_SIZE / 2 - 5, y + 16, outR_bmp);
} }
else { else {
lcdDrawText(x + X_OFFSET + COLUMN_SIZE - 2, y + 1, chanString, TINSIZE | TEXT_COLOR | RIGHT); lcdDrawText(x + COLUMN_SIZE - 2, y + 1, chanString, SMLSIZE | TEXT_COLOR | RIGHT);
} }
lcdColorTable[CUSTOM_COLOR_INDEX] = RED;
if (posOnBar(chanVal) > posOnBar(calcRESXto100(ld->offset))) { if (posOnBar(chanVal) > posOnBar(calcRESXto100(ld->offset))) {
lcdDrawSolidFilledRect(x + X_OFFSET + posOnBar(calcRESXto100(ld->offset)), y + 11, posOnBar(chanVal) - posOnBar(calcRESXto100(ld->offset)), BAR_HEIGHT, MAINVIEW_GRAPHICS_COLOR); lcdDrawSolidFilledRect(x + posOnBar(calcRESXto100(ld->offset)), y + Y_OUTBAR, posOnBar(chanVal) - posOnBar(calcRESXto100(ld->offset)), BAR_HEIGHT, CUSTOM_COLOR);
} }
else if (posOnBar(chanVal) < posOnBar(calcRESXto100(ld->offset))) { else if (posOnBar(chanVal) < posOnBar(calcRESXto100(ld->offset))) {
uint16_t endpoint = x + X_OFFSET + posOnBar(calcRESXto100(ld->offset)); uint16_t endpoint = x + posOnBar(calcRESXto100(ld->offset));
uint16_t size = posOnBar(calcRESXto100(ld->offset)) - posOnBar(chanVal); uint16_t size = posOnBar(calcRESXto100(ld->offset)) - posOnBar(chanVal);
lcdDrawSolidFilledRect(endpoint - size, y + 11, size, BAR_HEIGHT, MAINVIEW_GRAPHICS_COLOR); lcdDrawSolidFilledRect(endpoint - size, y + Y_OUTBAR, size, BAR_HEIGHT, CUSTOM_COLOR);
} }
if (safetyCh[channel] != OVERRIDE_CHANNEL_UNDEFINED) lcd->drawBitmap(x + 3, y + 5, locked_bmp); if (safetyCh[channel] != OVERRIDE_CHANNEL_UNDEFINED) lcd->drawBitmap(x -X_OFFSET + 7, y + 7, locked_bmp);
if (ld->revert) lcd->drawBitmap(x + 16, y + 5, inver_bmp); if (ld->revert) lcd->drawBitmap(x -X_OFFSET + 7, y + 25, inver_bmp);
lcd->drawSolidVerticalLine(x + X_OFFSET + COLUMN_SIZE / 2, y + 11, BAR_HEIGHT, TEXT_COLOR); lcd->drawSolidVerticalLine(x + COLUMN_SIZE / 2, y + Y_OUTBAR, BAR_HEIGHT, TEXT_COLOR);
} }
bool menuOutputsMonitor(evt_t event, uint8_t page) bool menuChannelsMonitor(evt_t event, uint8_t page)
{ {
uint8_t channel = 16 * page; uint8_t channel = 8 * page;
uint16_t x = 1, y = Y_OFFSET; coord_t x = X_OFFSET, y = Y_OFFSET;
for (uint8_t i = 0; i < 8; i++, channel++, y += ROW_HEIGHT) {
drawStatusText(STR_MONITOR_CHANNELS_DESC);
for (uint8_t i = 0; i < 4; i++, channel++, y += ROW_HEIGHT) {
drawSingleOutputBar(x, y, channel); drawSingleOutputBar(x, y, channel);
drawSingleMixerBar(x, y + Y_MIXBAR, channel);
} }
x = 1 + LCD_W / 2; x = 1 + LCD_W / 2 + X_OFFSET;
y = Y_OFFSET; y = Y_OFFSET;
for (uint8_t i = 0; i < 8; i++, channel++, y += ROW_HEIGHT) { for (uint8_t i = 0; i < 4; i++, channel++, y += ROW_HEIGHT) {
drawSingleOutputBar(x, y, channel); drawSingleOutputBar(x, y, channel);
drawSingleMixerBar(x, y + Y_MIXBAR, channel);
} }
return true; return true;
} }
bool menuOutputs1(evt_t event) bool menuChannels1(evt_t event)
{ {
MENU(STR_MONITOR_OUTPUTS1, MONITOR_ICONS, menuTabMonitors, e_MonOutputs1, 0, { 0 }); MENU(STR_MONITOR_CHANNELS1, MONITOR_ICONS, menuTabMonitors, e_MonChannels1, 0, { 0 });
lastMonitorPage = e_MonOutputs1; lastMonitorPage = e_MonChannels1;
return menuOutputsMonitor(event, 0); return menuChannelsMonitor(event, 0);
} }
bool menuOutputs2(evt_t event) bool menuChannels2(evt_t event)
{ {
MENU(STR_MONITOR_OUTPUTS2, MONITOR_ICONS, menuTabMonitors, e_MonOutputs2, 0, { 0 }); MENU(STR_MONITOR_CHANNELS2, MONITOR_ICONS, menuTabMonitors, e_MonChannels2, 0, { 0 });
lastMonitorPage = e_MonOutputs2; lastMonitorPage = e_MonChannels2;
return menuOutputsMonitor(event, 1); return menuChannelsMonitor(event, 1);
} }
bool menuMixersMonitor(evt_t event, uint8_t page)
bool menuChannels3(evt_t event)
{ {
uint8_t channel = 16 * page; MENU(STR_MONITOR_CHANNELS3, MONITOR_ICONS, menuTabMonitors, e_MonChannels3, 0, { 0 });
uint16_t x = 1, y = Y_OFFSET; lastMonitorPage = e_MonChannels3;
for (uint8_t i = 0; i < 8; i++, channel++, y += ROW_HEIGHT) { return menuChannelsMonitor(event, 2);
drawSingleMixerBar(x, y, channel);
}
x = 1 + LCD_W / 2;
y = Y_OFFSET;
for (uint8_t i = 0; i < 8; i++, channel++, y += ROW_HEIGHT) {
drawSingleMixerBar(x, y, channel);
}
return true;
} }
bool menuMixers1(evt_t event) bool menuChannels4(evt_t event)
{ {
MENU(STR_MONITOR_MIXERS1, MONITOR_ICONS, menuTabMonitors, e_MonMixers1, 0, { 0 }); MENU(STR_MONITOR_CHANNELS4, MONITOR_ICONS, menuTabMonitors, e_MonChannels4, 0, { 0 });
lastMonitorPage = e_MonMixers1; lastMonitorPage = e_MonChannels4;
return menuMixersMonitor(event, 0); return menuChannelsMonitor(event, 3);
}
bool menuMixers2(evt_t event)
{
MENU(STR_MONITOR_MIXERS2, MONITOR_ICONS, menuTabMonitors, e_MonMixers2, 0, { 0 });
lastMonitorPage = e_MonMixers2;
return menuMixersMonitor(event, 1);
} }

View file

@ -365,11 +365,12 @@ const pm_char STR_MENUTEMPLATES[] PROGMEM = TR_MENUTEMPLATES;
const pm_char STR_MENUSTAT[] PROGMEM = TR_MENUSTAT; const pm_char STR_MENUSTAT[] PROGMEM = TR_MENUSTAT;
const pm_char STR_MENUDEBUG[] PROGMEM = TR_MENUDEBUG; const pm_char STR_MENUDEBUG[] PROGMEM = TR_MENUDEBUG;
const pm_char STR_MONITOR_OUTPUTS1[] PROGMEM = TR_MONITOR_OUTPUTS1; const pm_char STR_MONITOR_CHANNELS1[] PROGMEM = TR_MONITOR_CHANNELS1;
const pm_char STR_MONITOR_OUTPUTS2[] PROGMEM = TR_MONITOR_OUTPUTS2; const pm_char STR_MONITOR_CHANNELS2[] PROGMEM = TR_MONITOR_CHANNELS2;
const pm_char STR_MONITOR_SWITCHES[] PROGMEM = TR_MONITOR_SWITCHES; const pm_char STR_MONITOR_SWITCHES[] PROGMEM = TR_MONITOR_SWITCHES;
const pm_char STR_MONITOR_MIXERS1[] PROGMEM = TR_MONITOR_MIXERS1; const pm_char STR_MONITOR_CHANNELS3[] PROGMEM = TR_MONITOR_CHANNELS3;
const pm_char STR_MONITOR_MIXERS2[] PROGMEM = TR_MONITOR_MIXERS2; const pm_char STR_MONITOR_CHANNELS4[] PROGMEM = TR_MONITOR_CHANNELS4;
const pm_char STR_MONITOR_CHANNELS_DESC[] PROGMEM = TR_MONITOR_CHANNELS_DESC;
const pm_char STR_MENUGLOBALVARS[] PROGMEM = TR_MENUGLOBALVARS; const pm_char STR_MENUGLOBALVARS[] PROGMEM = TR_MENUGLOBALVARS;
#if defined(DSM2) || defined(PXX) #if defined(DSM2) || defined(PXX)

View file

@ -564,11 +564,12 @@ extern const pm_char STR_MENUTELEMETRY[];
extern const pm_char STR_MENUTEMPLATES[]; extern const pm_char STR_MENUTEMPLATES[];
extern const pm_char STR_MENUSTAT[]; extern const pm_char STR_MENUSTAT[];
extern const pm_char STR_MENUDEBUG[]; extern const pm_char STR_MENUDEBUG[];
extern const pm_char STR_MONITOR_OUTPUTS1[]; extern const pm_char STR_MONITOR_CHANNELS1[];
extern const pm_char STR_MONITOR_OUTPUTS2[]; extern const pm_char STR_MONITOR_CHANNELS2[];
extern const pm_char STR_MONITOR_SWITCHES[]; extern const pm_char STR_MONITOR_SWITCHES[];
extern const pm_char STR_MONITOR_MIXERS1[]; extern const pm_char STR_MONITOR_CHANNELS3[];
extern const pm_char STR_MONITOR_MIXERS2[]; extern const pm_char STR_MONITOR_CHANNELS4[];
extern const pm_char STR_MONITOR_CHANNELS_DESC[];
extern const pm_char STR_MENUGLOBALVARS[]; extern const pm_char STR_MENUGLOBALVARS[];
extern const pm_char STR_INVERT_THR[]; extern const pm_char STR_INVERT_THR[];
extern const pm_char STR_AND_SWITCH[]; extern const pm_char STR_AND_SWITCH[];
@ -757,7 +758,6 @@ extern const pm_char STR_OWN[];
extern const pm_char STR_ROTARY_ENCODER[]; extern const pm_char STR_ROTARY_ENCODER[];
extern const pm_char STR_DATE[]; extern const pm_char STR_DATE[];
extern const pm_char STR_CHANNELS_MONITOR[]; extern const pm_char STR_CHANNELS_MONITOR[];
extern const pm_char STR_MIXERS_MONITOR[];
extern const pm_char STR_PATH_TOO_LONG[]; extern const pm_char STR_PATH_TOO_LONG[];
extern const pm_char STR_VIEW_TEXT[]; extern const pm_char STR_VIEW_TEXT[];
extern const pm_char STR_FLASH_BOOTLOADER[]; extern const pm_char STR_FLASH_BOOTLOADER[];

View file

@ -847,11 +847,12 @@
#define TR_MENUTEMPLATES "ŠABLONY" #define TR_MENUTEMPLATES "ŠABLONY"
#define TR_MENUSTAT "STATISTIKA" #define TR_MENUSTAT "STATISTIKA"
#define TR_MENUDEBUG "DIAG" #define TR_MENUDEBUG "DIAG"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#if defined(CPUARM) #if defined(CPUARM)
#define TR_RECEIVER_NUM TR(INDENT "RX číslo", INDENT "Číslo přijímače") #define TR_RECEIVER_NUM TR(INDENT "RX číslo", INDENT "Číslo přijímače")
#define TR_RECEIVER INDENT "Receiver" #define TR_RECEIVER INDENT "Receiver"

View file

@ -851,11 +851,12 @@
#define TR_MENUTEMPLATES "VORLAGEN" #define TR_MENUTEMPLATES "VORLAGEN"
#define TR_MENUSTAT "STAT" #define TR_MENUSTAT "STAT"
#define TR_MENUDEBUG "DEBUG" #define TR_MENUDEBUG "DEBUG"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#if defined(CPUARM) #if defined(CPUARM)
#define TR_RECEIVER_NUM TR(INDENT "Empf Nr.", INDENT "Modell-Match-Nr.") #define TR_RECEIVER_NUM TR(INDENT "Empf Nr.", INDENT "Modell-Match-Nr.")
#define TR_RECEIVER INDENT "Receiver" #define TR_RECEIVER INDENT "Receiver"

View file

@ -865,11 +865,12 @@
#define TR_MENUTEMPLATES "TEMPLATES" #define TR_MENUTEMPLATES "TEMPLATES"
#define TR_MENUSTAT "STATS" #define TR_MENUSTAT "STATS"
#define TR_MENUDEBUG "DEBUG" #define TR_MENUDEBUG "DEBUG"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#if defined(CPUARM) #if defined(CPUARM)
#define TR_RECEIVER_NUM TR(INDENT "RxNum", INDENT "Receiver No.") #define TR_RECEIVER_NUM TR(INDENT "RxNum", INDENT "Receiver No.")
#define TR_RECEIVER INDENT "Receiver" #define TR_RECEIVER INDENT "Receiver"

View file

@ -815,11 +815,12 @@
#define TR_MENUTEMPLATES "PLANTILLAS" #define TR_MENUTEMPLATES "PLANTILLAS"
#define TR_MENUSTAT "STATS" #define TR_MENUSTAT "STATS"
#define TR_MENUDEBUG "DEBUG" #define TR_MENUDEBUG "DEBUG"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#define TR_RECEIVER_NUM TR("RxNum", INDENT"Receptor No.") #define TR_RECEIVER_NUM TR("RxNum", INDENT"Receptor No.")
#define TR_RECEIVER INDENT "Receiver" #define TR_RECEIVER INDENT "Receiver"
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune" #define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"

View file

@ -815,11 +815,12 @@
#define TR_MENUTEMPLATES "TEMPLATES" #define TR_MENUTEMPLATES "TEMPLATES"
#define TR_MENUSTAT "STATS" #define TR_MENUSTAT "STATS"
#define TR_MENUDEBUG "DEBUG" #define TR_MENUDEBUG "DEBUG"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#define TR_RECEIVER_NUM TR("RxNum", INDENT"Receiver No.") #define TR_RECEIVER_NUM TR("RxNum", INDENT"Receiver No.")
#define TR_RECEIVER INDENT "Receiver" #define TR_RECEIVER INDENT "Receiver"
#define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune" #define TR_MULTI_RFTUNE INDENT "RF Freq. fine tune"

View file

@ -842,11 +842,12 @@
#define TR_MENUTEMPLATES "GABARITS" #define TR_MENUTEMPLATES "GABARITS"
#define TR_MENUSTAT TR("STATS", "STATISTIQUES") #define TR_MENUSTAT TR("STATS", "STATISTIQUES")
#define TR_MENUDEBUG "DEBUG" #define TR_MENUDEBUG "DEBUG"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#if defined(CPUARM) #if defined(CPUARM)
#define TR_RECEIVER_NUM TR(INDENT "NumRx", INDENT "No. récepteur") #define TR_RECEIVER_NUM TR(INDENT "NumRx", INDENT "No. récepteur")
#define TR_RECEIVER INDENT "Récepteur" #define TR_RECEIVER INDENT "Récepteur"

View file

@ -846,11 +846,12 @@
#define TR_MENUTEMPLATES "ESEMPI GUIDA" #define TR_MENUTEMPLATES "ESEMPI GUIDA"
#define TR_MENUSTAT "STATO" #define TR_MENUSTAT "STATO"
#define TR_MENUDEBUG "DEBUG" #define TR_MENUDEBUG "DEBUG"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#if defined(CPUARM) #if defined(CPUARM)
#define TR_RECEIVER_NUM TR(INDENT "RxNum", INDENT "Ricevente No.") #define TR_RECEIVER_NUM TR(INDENT "RxNum", INDENT "Ricevente No.")
#define TR_RECEIVER INDENT "Receiver" #define TR_RECEIVER INDENT "Receiver"

View file

@ -860,11 +860,12 @@
#define TR_MENUTEMPLATES "SJABLONEN" #define TR_MENUTEMPLATES "SJABLONEN"
#define TR_MENUSTAT "STAT" #define TR_MENUSTAT "STAT"
#define TR_MENUDEBUG "DEBUG" #define TR_MENUDEBUG "DEBUG"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#if defined(CPUARM) #if defined(CPUARM)
#define TR_RECEIVER_NUM TR(INDENT "RxNum", INDENT "Receiver No.") #define TR_RECEIVER_NUM TR(INDENT "RxNum", INDENT "Receiver No.")
#define TR_RECEIVER INDENT "Receiver" #define TR_RECEIVER INDENT "Receiver"

View file

@ -848,11 +848,12 @@
#define TR_MENUTEMPLATES "SZABLONY" #define TR_MENUTEMPLATES "SZABLONY"
#define TR_MENUSTAT "STAT" #define TR_MENUSTAT "STAT"
#define TR_MENUDEBUG "DEBUG" #define TR_MENUDEBUG "DEBUG"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#if defined(CPUARM) #if defined(CPUARM)
#define TR_RECEIVER_NUM TR( INDENT "Nr RX",INDENT "Nr odbiornika") #define TR_RECEIVER_NUM TR( INDENT "Nr RX",INDENT "Nr odbiornika")
#define TR_RECEIVER INDENT "Receiver" #define TR_RECEIVER INDENT "Receiver"

View file

@ -811,11 +811,12 @@
#define TR_MENUTEMPLATES "MODELOS" #define TR_MENUTEMPLATES "MODELOS"
#define TR_MENUSTAT "REGISTROS" #define TR_MENUSTAT "REGISTROS"
#define TR_MENUDEBUG "DEPURAR" #define TR_MENUDEBUG "DEPURAR"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#define TR_RECEIVER_NUM "RxNum" #define TR_RECEIVER_NUM "RxNum"
#define TR_RECEIVER INDENT "Receiver" #define TR_RECEIVER INDENT "Receiver"
#define TR_SYNCMENU "Sync [MENU]" #define TR_SYNCMENU "Sync [MENU]"

View file

@ -859,11 +859,12 @@
#define TR_MENUTEMPLATES "MALLAR" #define TR_MENUTEMPLATES "MALLAR"
#define TR_MENUSTAT "STATISTIK" #define TR_MENUSTAT "STATISTIK"
#define TR_MENUDEBUG "DEBUG" #define TR_MENUDEBUG "DEBUG"
#define TR_MONITOR_OUTPUTS1 "OUTPUTS MONITOR 1/16" #define TR_MONITOR_CHANNELS1 "CHANNELS MONITOR 1/8"
#define TR_MONITOR_OUTPUTS2 "OUTPUTS MONITOR 17/32" #define TR_MONITOR_CHANNELS2 "CHANNELS MONITOR 9/16"
#define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR" #define TR_MONITOR_SWITCHES "LOGICAL SWITCHES MONITOR"
#define TR_MONITOR_MIXERS1 "MIXERS MONITOR 1/16" #define TR_MONITOR_CHANNELS3 "CHANNELS MONITOR 17/24"
#define TR_MONITOR_MIXERS2 "MIXERS MONITOR 17/32" #define TR_MONITOR_CHANNELS4 "CHANNELS MONITOR 25/32"
#define TR_MONITOR_CHANNELS_DESC "RED : Outputs, GREEN : Mixers"
#if defined(CPUARM) #if defined(CPUARM)
#define TR_RECEIVER_NUM TR(INDENT "RxNum", INDENT "Mottagare Nr.") #define TR_RECEIVER_NUM TR(INDENT "RxNum", INDENT "Mottagare Nr.")
#define TR_RECEIVER INDENT "Receiver" #define TR_RECEIVER INDENT "Receiver"