diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index d54886ab4..b5e4b580d 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1743,20 +1743,27 @@ void menuModelFailsafe(event_t event) void menuModelPinmap(event_t event) { + const int lim = (g_model.extendedLimits ? (512 * LIMIT_EXT_PERCENT / 100) : 512) * 2; + uint8_t wbar = LCD_W / 2 - 20; SIMPLE_SUBMENU_NOTITLE(sentModuleChannels(g_moduleIdx) + 1); - lcdDrawTextAlignedCenter(0, PINMAPSET); + lcdDrawTextAlignedLeft(0, STR_PINMAPSET); + for (uint8_t pos=0; pos= sentModuleChannels(g_moduleIdx) ? 2 : 0); uint8_t pin = (menuVerticalPosition >= 8 ? 8 : 0) + line; for (; line < 8; line++) { + const int32_t channelValue = channelOutputs[getPinOuput(g_receiverIdx, g_moduleIdx, pin)]; + //Pin lcdDrawTextAlignedLeft(y, "Pin"); - lcdDrawNumber(lcdLastRightPos+5, y, pin); + lcdDrawNumber(lcdLastRightPos+5, y, pin+1); lcdDrawText(lcdLastRightPos+5, y, " -> "); @@ -1764,11 +1771,21 @@ void menuModelPinmap(event_t event) LcdFlags flags = SMLSIZE; if (menuVerticalPosition == pin) { flags |= INVERS; - if (s_editMode) { + if (s_editMode > 0) { + uint8_t channel = getPinOuput(g_receiverIdx, g_moduleIdx, pin); flags |= BLINK; + CHECK_INCDEC_MODELVAR(event, channel, 0, sentModuleChannels(g_moduleIdx)); + setPinOuput(g_receiverIdx, g_moduleIdx, pin, channel); } } - lcdDrawNumber(lcdLastRightPos+5, y, getPinOuput(g_receiverIdx, g_moduleIdx, pin), flags); + + //lcdDrawNumber(lcdLastRightPos+5, y, getPinOuput(g_receiverIdx, g_moduleIdx, pin)+1, flags); + putsChn(lcdLastRightPos+5, y, getPinOuput(g_receiverIdx, g_moduleIdx, pin)+1, flags); + + const uint8_t lenChannel = limit(1, (abs(channelValue) * wbar/2 + lim/2) / lim, wbar/2); + const coord_t xChannel = (channelValue>0) ? x+LCD_W-3-wbar/2 : x+LCD_W-2-wbar/2-lenChannel; + lcdDrawHorizontalLine(xChannel, y+1, lenChannel, DOTTED, 0); + lcdDrawHorizontalLine(xChannel, y+2, lenChannel, DOTTED, 0); y += FH; diff --git a/radio/src/pulses/modules.h b/radio/src/pulses/modules.h index c2429c512..d516578c5 100644 --- a/radio/src/pulses/modules.h +++ b/radio/src/pulses/modules.h @@ -22,6 +22,7 @@ #define _MODULES_H_ #include "myeeprom.h" +#include "bitfield.h" #define CROSSFIRE_CHANNELS_COUNT 16 @@ -205,6 +206,11 @@ inline uint8_t getPinOuput(uint8_t receiverIdx, uint8_t moduleIdx, uint8_t pin) return ((g_model.moduleData[moduleIdx].pxx2.receivers[receiverIdx].channelMapping >> (pin + ((pin & 0x01) ? -1 : 1 )) * 4) & 0x0F); } +inline void setPinOuput(uint8_t receiverIdx, uint8_t moduleIdx, uint8_t pin, uint8_t chan) +{ + BF_SET(g_model.moduleData[moduleIdx].pxx2.receivers[receiverIdx].channelMapping, chan, (pin + ((pin & 0x01) ? -1 : 1 )) * 4, 4); +} + inline int8_t maxModuleChannels_M8(uint8_t idx) { if (isExtraModule(idx)) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index e4e193e73..37bac1ed0 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -921,7 +921,7 @@ #define TR_EXTERNALRF "Externí RF modul" #define TR_FAILSAFE TR("Failsafe", "Mód Failsafe") #define TR_FAILSAFESET "NASTAVENÍ FAILSAFE" -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "SENZOR" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 4ca0b4b87..69e9df187 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -926,7 +926,7 @@ #define TR_EXTERNALRF "Externes HF-Modul" #define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Failsafe Mode") #define TR_FAILSAFESET "Failsafe setzen" -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "SENSOR" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 11271bdc4..a72d608dd 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -925,7 +925,7 @@ #define TR_EXTERNALRF "External RF" #define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Failsafe mode") #define TR_FAILSAFESET "FAILSAFE SETTINGS" -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "SENSOR" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index c23960ff0..7fc117308 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -932,7 +932,7 @@ #define TR_EXTERNALRF "Externa RF" #define TR_FAILSAFE INDENT"Modo sgdad." #define TR_FAILSAFESET "AJUSTES SGDAD." -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "SENSOR" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 23299f60d..6ef6c9b68 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -924,7 +924,7 @@ #define TR_EXTERNALRF "External RF" #define TR_FAILSAFE INDENT "Failsafe mode" #define TR_FAILSAFESET "FAILSAFE SETTINGS" -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "SENSOR" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index c0db44d14..f7828ef04 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -936,7 +936,7 @@ #define TR_EXTERNALRF "HF externe" #define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Type failsafe") #define TR_FAILSAFESET "REGLAGES FAILSAFE" -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "CAPTEUR" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 0519c3c62..b91102993 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -926,7 +926,7 @@ #define TR_EXTERNALRF "Modulo esterno" #define TR_FAILSAFE "Modo failsafe" #define TR_FAILSAFESET TR("FAILSAFE","IMPOSTAZIONI FAILSAFE") -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "SENSOR" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index a7f76b6af..36a9a8934 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -927,7 +927,7 @@ #define TR_EXTERNALRF "Externe RF" #define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Failsafe Modus") #define TR_FAILSAFESET "Failsafe instellen" -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "SENSOR" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a2b77ddb1..2486ac2a0 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -927,7 +927,7 @@ #define TR_EXTERNALRF "Zewn.Moduł RF" #define TR_FAILSAFE TR(INDENT"Failsafe",INDENT"Tryb Failsafe") #define TR_FAILSAFESET "USTAWIENIE FAILSAFE" -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "CZUJNIK" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index fc86c00c1..f2969bac4 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -931,7 +931,7 @@ #define TR_EXTERNALRF "External RF" #define TR_FAILSAFE "Failsafe mode" #define TR_FAILSAFESET "FAILSAFE SETTINGS" -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "SENSOR" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index e92877c95..9b533adfc 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -940,7 +940,7 @@ #define TR_EXTERNALRF "Extern Radiomodul" #define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Failsafeläge") #define TR_FAILSAFESET "FailsafeInställning" -#define TR_PINMAPSET "Set PIN to CH map" +#define TR_PINMAPSET "PINMAP" #define TR_HOLD "HOLD" #define TR_NONE "NONE" #define TR_MENUSENSOR "SENSOR"