mirror of
https://github.com/EdgeTX/edgetx.git
synced 2025-07-14 11:59:49 +03:00
feat: Add initial Jumper T20 support (#3726)
* Jumper T20 * Fix center beeps * Add option to pinch top trim as well to bootloader * chore: Regenerate yaml * chore: Add entry for Buddy * Jumper T20 * Foldable section for fonction swith and fix preflight pot checks * Remove duplicated entry * Rename "function switches" to "customizable switches" * chore: Add translations * chore: Update translations * chore: Update Companion translations/wording
This commit is contained in:
parent
ab5f44bacf
commit
7f669f12d9
74 changed files with 1504 additions and 174 deletions
2
.github/workflows/actions.yml
vendored
2
.github/workflows/actions.yml
vendored
|
@ -52,6 +52,7 @@ jobs:
|
|||
- t18
|
||||
- t8
|
||||
- tlite
|
||||
- t20
|
||||
- tx12
|
||||
- tx16s
|
||||
- x10
|
||||
|
@ -97,6 +98,7 @@ jobs:
|
|||
- t18
|
||||
- t8;zorro;commando8
|
||||
- tlite;tlitef4;tpro;tprov2;lr3pro
|
||||
- t20
|
||||
- tx12;tx12mk2;boxer
|
||||
- tx16s
|
||||
- x10;x10-access
|
||||
|
|
|
@ -320,6 +320,8 @@ elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TLITEF4)
|
|||
set(FLAVOUR tlitef4)
|
||||
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TPRO)
|
||||
set(FLAVOUR tpro)
|
||||
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T20)
|
||||
set(FLAVOUR t20)
|
||||
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TX12)
|
||||
set(FLAVOUR tx12)
|
||||
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TX12MK2)
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Function Switches</string>
|
||||
<string>Customizable Switches</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||
|
|
|
@ -965,7 +965,7 @@ QString MultiModelPrinter::printFunctionSwitches()
|
|||
int numFS = Boards::getCapability(firmware->getBoard(), Board::FunctionSwitches);
|
||||
int colwidth = 80 / numFS;
|
||||
|
||||
QStringList headings = { tr("Function Switches") };
|
||||
QStringList headings = { tr("Customizable Switches") };
|
||||
for (int i = 0; i < numFS; i++) {
|
||||
headings << tr("Switch %1").arg(i + 1);
|
||||
}
|
||||
|
|
|
@ -4617,8 +4617,8 @@ Nyní používáte:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Nastavitelné přepínače</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="69"/>
|
||||
|
@ -10492,8 +10492,8 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Nastavitelné přepínače</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="970"/>
|
||||
|
|
|
@ -3646,8 +3646,8 @@ Du anvender aktuelt:
|
|||
<translation>Formular</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Function Switches</source>
|
||||
<translation>Funktion kontakt</translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Kontakter der kan tilpasses</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Type</source>
|
||||
|
@ -8503,8 +8503,8 @@ p, li { white-space: pre-wrap; }
|
|||
<translation>Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Function Switches</source>
|
||||
<translation>Funktion kontakt</translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Kontakter der kan tilpasses</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Switch %1</source>
|
||||
|
|
|
@ -4600,8 +4600,8 @@ Sie verwenden gerade:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Anpassbare Schalter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="69"/>
|
||||
|
@ -10471,8 +10471,8 @@ If blank then the mix is considered to be "ON" all the time.</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Anpassbare Schalter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="970"/>
|
||||
|
|
|
@ -4564,7 +4564,7 @@ You are currently using:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -10368,7 +10368,7 @@ If blank then the mix is considered to be "ON" all the time.</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
|
|
@ -4613,7 +4613,7 @@ Actualmente estás usando:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -10564,7 +10564,7 @@ Esto determina cómo los valores de mezcla son añadidos.
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
|
|
@ -4598,7 +4598,7 @@ Käytät nyt:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -10512,7 +10512,7 @@ Jos tyhjä mikserin katsotaan olevan "ON" kokoajan.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
|
|
@ -4612,8 +4612,8 @@ Vous utilisez actuellement:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Inters paramétrables</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="69"/>
|
||||
|
@ -10717,8 +10717,8 @@ Mixage actif par défaut si non-renseigné.</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Inters paramétrables</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="970"/>
|
||||
|
|
|
@ -4564,8 +4564,8 @@ You are currently using:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>מפסקים בהתאמה אישית</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="69"/>
|
||||
|
@ -10548,8 +10548,8 @@ This determines how mixer values are added.
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>מפסקים בהתאמה אישית</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="970"/>
|
||||
|
|
|
@ -4598,8 +4598,8 @@ state attualmente utilizzando:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Interruttori personalizzabili</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="69"/>
|
||||
|
@ -10517,8 +10517,8 @@ Determina come il valore viene aggiunto alla miscelazione.
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Interruttori personalizzabili</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="970"/>
|
||||
|
|
|
@ -4597,7 +4597,7 @@ You are currently using:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -10709,7 +10709,7 @@ If blank then the mix is considered to be "ON" all the time.</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
|
|
@ -4564,7 +4564,7 @@ You are currently using:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -10546,7 +10546,7 @@ If blank then the mix is considered to be "ON" all the time.</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
|
|
@ -4585,8 +4585,8 @@ Aktualnie używasz:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Ustawiane przełączniki</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="69"/>
|
||||
|
@ -10510,8 +10510,8 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Ustawiane przełączniki</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="970"/>
|
||||
|
|
|
@ -4564,7 +4564,7 @@ You are currently using:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -10548,7 +10548,7 @@ This determines how mixer values are added.
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
|
|
@ -4596,7 +4596,7 @@ You are currently using:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -10478,7 +10478,7 @@ This determines how mixer values are added.
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<source>Customizable Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
|
|
@ -3646,8 +3646,8 @@ Du använder för närvarande:
|
|||
<translation>Formulär</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Function Switches</source>
|
||||
<translation>Funktionsbrytare</translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Anpassningsbara brytare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Type</source>
|
||||
|
@ -8504,8 +8504,8 @@ p, li { white-space: pre-wrap; }
|
|||
<translation>Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Function Switches</source>
|
||||
<translation>Funktionsbrytare</translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>Anpassningsbara brytare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Switch %1</source>
|
||||
|
|
|
@ -4648,8 +4648,8 @@ You are currently using:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>可自定义开关</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="69"/>
|
||||
|
@ -10610,8 +10610,8 @@ If blank then the mix is considered to be "ON" all the time.</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>可自定义开关</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="970"/>
|
||||
|
|
|
@ -4648,8 +4648,8 @@ You are currently using:
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="47"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>可自定義開關</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../modeledit/setup_function_switches.ui" line="69"/>
|
||||
|
@ -10610,8 +10610,8 @@ If blank then the mix is considered to be "ON" all the time.</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="968"/>
|
||||
<source>Function Switches</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Customizable Switches</source>
|
||||
<translation>可自定義開關</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../multimodelprinter.cpp" line="970"/>
|
||||
|
|
1
fw.json
1
fw.json
|
@ -25,6 +25,7 @@
|
|||
["Jumper T-Lite (F4 MCU)", "tlitef4-"],
|
||||
["Jumper T-Pro", "tpro-"],
|
||||
["Jumper T-Pro V2", "tprov2-"],
|
||||
["Jumper T20", "t20-"],
|
||||
["RadioMaster T8", "t8-"],
|
||||
["RadioMaster TX12", "tx12-"],
|
||||
["RadioMaster Boxer", "boxer-"],
|
||||
|
|
|
@ -405,7 +405,11 @@ enum PotsWarnMode {
|
|||
#define MAX_CALIB_ANALOG_INPUTS (MAX_STICKS + MAX_POTS + MAX_AXIS)
|
||||
|
||||
#define MAX_SWITCHES 20
|
||||
#if defined(RADIO_T20)
|
||||
#define MAX_TRIMS 8
|
||||
#else
|
||||
#define MAX_TRIMS 6
|
||||
#endif
|
||||
|
||||
#define MAX_XPOTS_POSITIONS (MAX_POTS * XPOTS_MULTIPOS_COUNT)
|
||||
|
||||
|
|
|
@ -128,6 +128,9 @@ static inline void check_struct()
|
|||
#elif defined(RADIO_TPROV2)
|
||||
CHKSIZE(RadioData, 859);
|
||||
CHKSIZE(ModelData, 6290);
|
||||
#elif defined(RADIO_T20)
|
||||
CHKSIZE(RadioData, 859);
|
||||
CHKSIZE(ModelData, 6326);
|
||||
#elif defined(RADIO_BOXER)
|
||||
CHKSIZE(RadioData, 870);
|
||||
CHKSIZE(ModelData, 6265);
|
||||
|
|
|
@ -37,7 +37,7 @@ enum MenuModelFlightModeItems {
|
|||
ITEM_MODEL_FLIGHT_MODE_NAME,
|
||||
ITEM_MODEL_FLIGHT_MODE_SWITCH,
|
||||
ITEM_MODEL_FLIGHT_MODE_TRIMS,
|
||||
#if defined(TRIMS_GPIO_REG_T5L)
|
||||
#if defined(TRIMS_GPIO_REG_T5L) || defined(TRIMS_GPIO_REG_LSD)
|
||||
ITEM_MODEL_FLIGHT_MODE_TRIMS2,
|
||||
#endif
|
||||
ITEM_MODEL_FLIGHT_MODE_FADE_IN,
|
||||
|
@ -71,7 +71,7 @@ void menuModelFlightModeOne(event_t event)
|
|||
|
||||
#if defined(GVARS) && !defined(GVARS_IN_CURVES_SCREEN)
|
||||
|
||||
#if defined(TRIMS_GPIO_REG_T5L)
|
||||
#if defined(TRIMS_GPIO_REG_T5L) || defined(TRIMS_GPIO_REG_LSD)
|
||||
#define VERTICAL_SHIFT (ITEM_MODEL_FLIGHT_MODE_FADE_IN-ITEM_MODEL_FLIGHT_MODE_TRIMS2)
|
||||
static const uint8_t mstate_tab_fm1[] = {0, 3, (uint8_t)(keysGetMaxTrims() - 5), 0, 0, (uint8_t)-1, 1, 1, 1, 1, 1, 1};
|
||||
#else
|
||||
|
@ -132,7 +132,7 @@ void menuModelFlightModeOne(event_t event)
|
|||
}
|
||||
break;
|
||||
|
||||
#if defined(TRIMS_GPIO_REG_T5L)
|
||||
#if defined(TRIMS_GPIO_REG_T5L) || defined(TRIMS_GPIO_REG_LSD)
|
||||
case ITEM_MODEL_FLIGHT_MODE_TRIMS2:
|
||||
{
|
||||
auto trims = keysGetMaxTrims() - 4;
|
||||
|
|
|
@ -230,6 +230,7 @@ PACK(struct ExpandState {
|
|||
uint8_t preflight:1;
|
||||
uint8_t throttle:1;
|
||||
uint8_t viewOpt:1;
|
||||
uint8_t functionSwitches:1;
|
||||
});
|
||||
|
||||
struct ExpandState expandState;
|
||||
|
@ -248,6 +249,13 @@ uint8_t THROTTLE_ROW(uint8_t value)
|
|||
return HIDDEN_ROW;
|
||||
}
|
||||
|
||||
uint8_t FS_ROW(uint8_t value)
|
||||
{
|
||||
if (expandState.functionSwitches)
|
||||
return value;
|
||||
return HIDDEN_ROW;
|
||||
}
|
||||
|
||||
uint8_t VIEWOPT_ROW(uint8_t value)
|
||||
{
|
||||
if (expandState.viewOpt)
|
||||
|
@ -341,7 +349,14 @@ inline uint8_t TIMER_ROW(uint8_t timer, uint8_t value)
|
|||
#define EXTRA_MODULE_ROWS
|
||||
|
||||
#if defined(FUNCTION_SWITCHES)
|
||||
#define FUNCTION_SWITCHES_ROWS READONLY_ROW, NAVIGATION_LINE_BY_LINE|3, NAVIGATION_LINE_BY_LINE|3, NAVIGATION_LINE_BY_LINE|3, NAVIGATION_LINE_BY_LINE|3, NAVIGATION_LINE_BY_LINE|3, NAVIGATION_LINE_BY_LINE|3, NAVIGATION_LINE_BY_LINE|(NUM_FUNCTIONS_SWITCHES-1),
|
||||
#define FUNCTION_SWITCHES_ROWS 1, \
|
||||
FS_ROW(NAVIGATION_LINE_BY_LINE|3), \
|
||||
FS_ROW(NAVIGATION_LINE_BY_LINE|3), \
|
||||
FS_ROW(NAVIGATION_LINE_BY_LINE|3), \
|
||||
FS_ROW(NAVIGATION_LINE_BY_LINE|3), \
|
||||
FS_ROW(NAVIGATION_LINE_BY_LINE|3), \
|
||||
FS_ROW(NAVIGATION_LINE_BY_LINE|3), \
|
||||
FS_ROW(NAVIGATION_LINE_BY_LINE|(NUM_FUNCTIONS_SWITCHES-1)),
|
||||
#else
|
||||
#define FUNCTION_SWITCHES_ROWS
|
||||
#endif
|
||||
|
@ -779,7 +794,7 @@ void menuModelSetup(event_t event)
|
|||
#if defined(FUNCTION_SWITCHES)
|
||||
|
||||
case ITEM_MODEL_SETUP_LABEL:
|
||||
lcdDrawTextAlignedLeft(y, "Function Switches");
|
||||
expandState.functionSwitches = expandableSection(y, STR_FUNCTION_SWITCHES, expandState.functionSwitches, attr, event);
|
||||
break;
|
||||
|
||||
case ITEM_MODEL_SETUP_SW1:
|
||||
|
@ -1076,9 +1091,14 @@ void menuModelSetup(event_t event)
|
|||
(g_model.potsWarnEnabled & (1 << i))) {
|
||||
flags |= INVERS;
|
||||
}
|
||||
|
||||
lcdDrawText(x, y, getPotLabel(i), flags);
|
||||
x = lcdNextPos+3;
|
||||
if (max_pots > 3) {
|
||||
lcdDrawText(x, y, getAnalogShortLabel(adcGetInputOffset(ADC_INPUT_POT) + i), flags);
|
||||
x = lcdNextPos + 1;
|
||||
}
|
||||
else {
|
||||
lcdDrawText(x, y, getPotLabel(i), flags);
|
||||
x = lcdNextPos + 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1092,7 +1112,7 @@ void menuModelSetup(event_t event)
|
|||
LcdFlags flags = 0;
|
||||
if ((menuHorizontalPosition == i) && attr)
|
||||
flags = BLINK | INVERS;
|
||||
else if (ANALOG_CENTER_BEEP(x) || (attr && CURSOR_ON_LINE()))
|
||||
else if (ANALOG_CENTER_BEEP(i) || (attr && CURSOR_ON_LINE()))
|
||||
flags = INVERS;
|
||||
lcdDrawText(x, y, getAnalogShortLabel(i), flags);
|
||||
}
|
||||
|
|
|
@ -29,6 +29,12 @@ const unsigned char bmp_sleep[] = {
|
|||
#include "sleep.lbm"
|
||||
};
|
||||
|
||||
#if defined(RADIO_T20)
|
||||
constexpr uint8_t steps = NUM_FUNCTIONS_SWITCHES/2;
|
||||
#elif defined(FUNCTION_SWITCHES)
|
||||
constexpr uint8_t steps = NUM_FUNCTIONS_SWITCHES;
|
||||
#endif
|
||||
|
||||
void drawStartupAnimation(uint32_t duration, uint32_t totalDuration)
|
||||
{
|
||||
if (totalDuration == 0)
|
||||
|
@ -41,12 +47,16 @@ void drawStartupAnimation(uint32_t duration, uint32_t totalDuration)
|
|||
|
||||
#if defined(FUNCTION_SWITCHES)
|
||||
uint8_t index2 = limit<uint8_t>(
|
||||
0, duration / (totalDuration / (NUM_FUNCTIONS_SWITCHES + 1)),
|
||||
NUM_FUNCTIONS_SWITCHES);
|
||||
0, duration / (totalDuration / (steps + 1)),
|
||||
steps);
|
||||
|
||||
for (uint8_t j = 0; j < NUM_FUNCTIONS_SWITCHES; j++) {
|
||||
if (index2 > j)
|
||||
for (uint8_t j = 0; j < steps; j++) {
|
||||
if (index2 > j) {
|
||||
fsLedOn(j);
|
||||
#if defined(RADIO_T20)
|
||||
fsLedOn(j + steps);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -72,14 +82,22 @@ void drawShutdownAnimation(uint32_t duration, uint32_t totalDuration,
|
|||
lcdClear();
|
||||
|
||||
#if defined(FUNCTION_SWITCHES)
|
||||
uint8_t index2 = limit<uint8_t>(
|
||||
0, duration / (totalDuration / (NUM_FUNCTIONS_SWITCHES + 1)),
|
||||
NUM_FUNCTIONS_SWITCHES);
|
||||
|
||||
for (uint8_t j = 0; j < NUM_FUNCTIONS_SWITCHES; j++) {
|
||||
uint8_t index2 = limit<uint8_t>(
|
||||
0, duration / (totalDuration / (steps + 1)),
|
||||
steps);
|
||||
|
||||
for (uint8_t j = 0; j < steps; j++) {
|
||||
fsLedOff(j);
|
||||
if (NUM_FUNCTIONS_SWITCHES - index2 > j)
|
||||
#if defined(RADIO_T20)
|
||||
fsLedOff(j + steps);
|
||||
#endif
|
||||
if (steps - index2 > j) {
|
||||
fsLedOn(j);
|
||||
#if defined(RADIO_T20)
|
||||
fsLedOn(j + steps);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -485,7 +485,7 @@ void menuRadioHardware(event_t event)
|
|||
// draw hw name
|
||||
LcdFlags flags = menuHorizontalPosition < 0 ? attr : 0;
|
||||
lcdDrawText(INDENT_WIDTH, y, STR_CHAR_POT, flags);
|
||||
lcdDrawText(lcdNextPos, y, adcGetInputName(ADC_INPUT_POT, idx), flags);
|
||||
lcdDrawText(lcdNextPos, y, adcGetInputLabel(ADC_INPUT_POT, idx), flags);
|
||||
|
||||
// draw custom name
|
||||
if (analogHasCustomLabel(ADC_INPUT_POT, idx) ||
|
||||
|
|
|
@ -50,9 +50,11 @@ enum EnumKeys {
|
|||
|
||||
MAX_KEYS
|
||||
};
|
||||
|
||||
#if defined(RADIO_T20)
|
||||
#define MAX_TRIMS 8
|
||||
#else
|
||||
#define MAX_TRIMS 6
|
||||
|
||||
#endif
|
||||
// returns a bit field with each key set as (1 << KEY_xxx)
|
||||
uint32_t readKeys();
|
||||
|
||||
|
|
|
@ -27,7 +27,11 @@
|
|||
#define ROTENC_MIDSPEED 5
|
||||
#define ROTENC_HIGHSPEED 50
|
||||
|
||||
#if defined(RADIO_T20)
|
||||
#define ROTARY_ENCODER_GRANULARITY 4
|
||||
#else
|
||||
#define ROTARY_ENCODER_GRANULARITY 2
|
||||
#endif
|
||||
|
||||
typedef int32_t rotenc_t;
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ uint8_t getSwitchCount();
|
|||
// returns the highest row for a specified column
|
||||
uint8_t switchGetMaxRow(uint8_t col);
|
||||
|
||||
// returns the maximum number of function switches supported in hardware
|
||||
// returns the maximum number of customizable switches supported in hardware
|
||||
uint8_t switchGetMaxFctSwitches();
|
||||
|
||||
struct switch_display_pos_t {
|
||||
|
@ -63,10 +63,10 @@ struct switch_display_pos_t {
|
|||
|
||||
switch_display_pos_t switchGetDisplayPosition(uint8_t idx);
|
||||
|
||||
// The functions bellow support regular as well as function switches.
|
||||
// The functions bellow support regular as well as customizable switches.
|
||||
//
|
||||
// Regular switches are indexed from `0` to `switchGetMaxSwitches() - 1`
|
||||
// Function switches are indexed above the previous range.
|
||||
// Customizable switches are indexed above the previous range.
|
||||
//
|
||||
// The total number of switches (and max index + 1) is:
|
||||
// switchGetMaxSwitches() + switchGetMaxFctSwitches()
|
||||
|
|
|
@ -903,7 +903,9 @@ void alert(const char * title, const char * msg , uint8_t sound)
|
|||
}
|
||||
|
||||
#if defined(GVARS)
|
||||
#if MAX_TRIMS == 6
|
||||
#if MAX_TRIMS == 8
|
||||
int8_t trimGvar[MAX_TRIMS] = { -1, -1, -1, -1, -1, -1, -1, -1 };
|
||||
#elif MAX_TRIMS == 6
|
||||
int8_t trimGvar[MAX_TRIMS] = { -1, -1, -1, -1, -1, -1 };
|
||||
#elif MAX_TRIMS == 4
|
||||
int8_t trimGvar[MAX_TRIMS] = { -1, -1, -1, -1 };
|
||||
|
|
|
@ -300,7 +300,7 @@ void memswap(void * a, void * b, uint8_t size);
|
|||
#include "pulses/pulses.h"
|
||||
#include "pulses/modules_helpers.h"
|
||||
|
||||
#define MASK_CFN_TYPE uint64_t // current max = 64 function switches
|
||||
#define MASK_CFN_TYPE uint64_t // current max = 64 customizable switches
|
||||
#define MASK_FUNC_TYPE uint32_t // current max = 32 functions
|
||||
|
||||
struct CustomFunctionsContext {
|
||||
|
|
|
@ -46,14 +46,6 @@
|
|||
#define DISPLAY_VERSION
|
||||
#endif
|
||||
|
||||
#if defined(RADIO_TLITE)
|
||||
#if defined(STM32F407xx)
|
||||
#define CPU_NAME "-F4"
|
||||
#else
|
||||
#define CPU_NAME "-F2"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(COLORLCD)
|
||||
const char fw_stamp[] = "FW" TAB ": edgetx-" FLAVOUR;
|
||||
#if defined(RADIOMASTER_RELEASE) || defined(JUMPER_RELEASE)
|
||||
|
|
|
@ -23,6 +23,8 @@ elseif(PCB STREQUAL NV14)
|
|||
elseif(PCB STREQUAL X7)
|
||||
if(PCBREV STREQUAL TPRO)
|
||||
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_tpro.cpp)
|
||||
elseif(PCBREV STREQUAL T20)
|
||||
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_t20.cpp)
|
||||
else()
|
||||
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_128x64.cpp)
|
||||
endif()
|
||||
|
|
|
@ -37,6 +37,8 @@
|
|||
#elif defined(PCBX7)
|
||||
#if defined(RADIO_TPRO) || defined(RADIO_TPROV2)
|
||||
#include "yaml_datastructs_tpro.cpp"
|
||||
#elif defined(RADIO_T20)
|
||||
#include "yaml_datastructs_t20.cpp"
|
||||
#else
|
||||
#include "yaml_datastructs_128x64.cpp"
|
||||
#endif
|
||||
|
|
870
radio/src/storage/yaml/yaml_datastructs_t20.cpp
Normal file
870
radio/src/storage/yaml/yaml_datastructs_t20.cpp
Normal file
|
@ -0,0 +1,870 @@
|
|||
// generated by generate_yaml.py
|
||||
|
||||
//
|
||||
// Enums first
|
||||
//
|
||||
|
||||
const struct YamlIdStr enum_BacklightMode[] = {
|
||||
{ e_backlight_mode_off, "backlight_mode_off" },
|
||||
{ e_backlight_mode_keys, "backlight_mode_keys" },
|
||||
{ e_backlight_mode_sticks, "backlight_mode_sticks" },
|
||||
{ e_backlight_mode_all, "backlight_mode_all" },
|
||||
{ e_backlight_mode_on, "backlight_mode_on" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_AntennaModes[] = {
|
||||
{ ANTENNA_MODE_INTERNAL, "MODE_INTERNAL" },
|
||||
{ ANTENNA_MODE_ASK, "MODE_ASK" },
|
||||
{ ANTENNA_MODE_PER_MODEL, "MODE_PER_MODEL" },
|
||||
{ ANTENNA_MODE_EXTERNAL, "MODE_EXTERNAL" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_ModuleType[] = {
|
||||
{ MODULE_TYPE_NONE, "TYPE_NONE" },
|
||||
{ MODULE_TYPE_PPM, "TYPE_PPM" },
|
||||
{ MODULE_TYPE_XJT_PXX1, "TYPE_XJT_PXX1" },
|
||||
{ MODULE_TYPE_ISRM_PXX2, "TYPE_ISRM_PXX2" },
|
||||
{ MODULE_TYPE_DSM2, "TYPE_DSM2" },
|
||||
{ MODULE_TYPE_CROSSFIRE, "TYPE_CROSSFIRE" },
|
||||
{ MODULE_TYPE_MULTIMODULE, "TYPE_MULTIMODULE" },
|
||||
{ MODULE_TYPE_R9M_PXX1, "TYPE_R9M_PXX1" },
|
||||
{ MODULE_TYPE_R9M_PXX2, "TYPE_R9M_PXX2" },
|
||||
{ MODULE_TYPE_R9M_LITE_PXX1, "TYPE_R9M_LITE_PXX1" },
|
||||
{ MODULE_TYPE_R9M_LITE_PXX2, "TYPE_R9M_LITE_PXX2" },
|
||||
{ MODULE_TYPE_GHOST, "TYPE_GHOST" },
|
||||
{ MODULE_TYPE_R9M_LITE_PRO_PXX2, "TYPE_R9M_LITE_PRO_PXX2" },
|
||||
{ MODULE_TYPE_SBUS, "TYPE_SBUS" },
|
||||
{ MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" },
|
||||
{ MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" },
|
||||
{ MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_TrainerMultiplex[] = {
|
||||
{ TRAINER_OFF, "OFF" },
|
||||
{ TRAINER_ADD, "ADD" },
|
||||
{ TRAINER_REPL, "REPL" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_BeeperMode[] = {
|
||||
{ e_mode_quiet, "mode_quiet" },
|
||||
{ e_mode_alarms, "mode_alarms" },
|
||||
{ e_mode_nokeys, "mode_nokeys" },
|
||||
{ e_mode_all, "mode_all" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_BluetoothModes[] = {
|
||||
{ BLUETOOTH_OFF, "OFF" },
|
||||
{ BLUETOOTH_TELEMETRY, "TELEMETRY" },
|
||||
{ BLUETOOTH_TRAINER, "TRAINER" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_Functions[] = {
|
||||
{ FUNC_OVERRIDE_CHANNEL, "OVERRIDE_CHANNEL" },
|
||||
{ FUNC_TRAINER, "TRAINER" },
|
||||
{ FUNC_INSTANT_TRIM, "INSTANT_TRIM" },
|
||||
{ FUNC_RESET, "RESET" },
|
||||
{ FUNC_SET_TIMER, "SET_TIMER" },
|
||||
{ FUNC_ADJUST_GVAR, "ADJUST_GVAR" },
|
||||
{ FUNC_VOLUME, "VOLUME" },
|
||||
{ FUNC_SET_FAILSAFE, "SET_FAILSAFE" },
|
||||
{ FUNC_RANGECHECK, "RANGECHECK" },
|
||||
{ FUNC_BIND, "BIND" },
|
||||
{ FUNC_PLAY_SOUND, "PLAY_SOUND" },
|
||||
{ FUNC_PLAY_TRACK, "PLAY_TRACK" },
|
||||
{ FUNC_PLAY_VALUE, "PLAY_VALUE" },
|
||||
{ FUNC_PLAY_SCRIPT, "PLAY_SCRIPT" },
|
||||
{ FUNC_BACKGND_MUSIC, "BACKGND_MUSIC" },
|
||||
{ FUNC_BACKGND_MUSIC_PAUSE, "BACKGND_MUSIC_PAUSE" },
|
||||
{ FUNC_VARIO, "VARIO" },
|
||||
{ FUNC_HAPTIC, "HAPTIC" },
|
||||
{ FUNC_LOGS, "LOGS" },
|
||||
{ FUNC_BACKLIGHT, "BACKLIGHT" },
|
||||
{ FUNC_SCREENSHOT, "SCREENSHOT" },
|
||||
{ FUNC_RACING_MODE, "RACING_MODE" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_TimerModes[] = {
|
||||
{ TMRMODE_OFF, "OFF" },
|
||||
{ TMRMODE_ON, "ON" },
|
||||
{ TMRMODE_START, "START" },
|
||||
{ TMRMODE_THR, "THR" },
|
||||
{ TMRMODE_THR_REL, "THR_REL" },
|
||||
{ TMRMODE_THR_START, "THR_START" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_MixerMultiplex[] = {
|
||||
{ MLTPX_ADD, "ADD" },
|
||||
{ MLTPX_MUL, "MUL" },
|
||||
{ MLTPX_REPL, "REPL" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_MixSources[] = {
|
||||
{ MIXSRC_NONE, "NONE" },
|
||||
{ MIXSRC_MAX, "MAX" },
|
||||
{ MIXSRC_TrimRud, "TrimRud" },
|
||||
{ MIXSRC_TrimEle, "TrimEle" },
|
||||
{ MIXSRC_TrimThr, "TrimThr" },
|
||||
{ MIXSRC_TrimAil, "TrimAil" },
|
||||
{ MIXSRC_TrimT5, "TrimT5" },
|
||||
{ MIXSRC_TrimT6, "TrimT6" },
|
||||
{ MIXSRC_TX_VOLTAGE, "TX_VOLTAGE" },
|
||||
{ MIXSRC_TX_TIME, "TX_TIME" },
|
||||
{ MIXSRC_TX_GPS, "TX_GPS" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_LogicalSwitchesFunctions[] = {
|
||||
{ LS_FUNC_NONE, "FUNC_NONE" },
|
||||
{ LS_FUNC_VEQUAL, "FUNC_VEQUAL" },
|
||||
{ LS_FUNC_VALMOSTEQUAL, "FUNC_VALMOSTEQUAL" },
|
||||
{ LS_FUNC_VPOS, "FUNC_VPOS" },
|
||||
{ LS_FUNC_VNEG, "FUNC_VNEG" },
|
||||
{ LS_FUNC_RANGE, "FUNC_RANGE" },
|
||||
{ LS_FUNC_APOS, "FUNC_APOS" },
|
||||
{ LS_FUNC_ANEG, "FUNC_ANEG" },
|
||||
{ LS_FUNC_AND, "FUNC_AND" },
|
||||
{ LS_FUNC_OR, "FUNC_OR" },
|
||||
{ LS_FUNC_XOR, "FUNC_XOR" },
|
||||
{ LS_FUNC_EDGE, "FUNC_EDGE" },
|
||||
{ LS_FUNC_EQUAL, "FUNC_EQUAL" },
|
||||
{ LS_FUNC_GREATER, "FUNC_GREATER" },
|
||||
{ LS_FUNC_LESS, "FUNC_LESS" },
|
||||
{ LS_FUNC_DIFFEGREATER, "FUNC_DIFFEGREATER" },
|
||||
{ LS_FUNC_ADIFFEGREATER, "FUNC_ADIFFEGREATER" },
|
||||
{ LS_FUNC_TIMER, "FUNC_TIMER" },
|
||||
{ LS_FUNC_STICKY, "FUNC_STICKY" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_SwashType[] = {
|
||||
{ SWASH_TYPE_NONE, "TYPE_NONE" },
|
||||
{ SWASH_TYPE_120, "TYPE_120" },
|
||||
{ SWASH_TYPE_120X, "TYPE_120X" },
|
||||
{ SWASH_TYPE_140, "TYPE_140" },
|
||||
{ SWASH_TYPE_90, "TYPE_90" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_SwitchSources[] = {
|
||||
{ SWSRC_NONE, "NONE" },
|
||||
{ SWSRC_ON, "ON" },
|
||||
{ SWSRC_ONE, "ONE" },
|
||||
{ SWSRC_TELEMETRY_STREAMING, "TELEMETRY_STREAMING" },
|
||||
{ SWSRC_RADIO_ACTIVITY, "RADIO_ACTIVITY" },
|
||||
{ SWSRC_OFF, "OFF" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_PotsWarnMode[] = {
|
||||
{ POTS_WARN_OFF, "WARN_OFF" },
|
||||
{ POTS_WARN_MANUAL, "WARN_MANUAL" },
|
||||
{ POTS_WARN_AUTO, "WARN_AUTO" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_ModelOverridableEnable[] = {
|
||||
{ OVERRIDE_GLOBAL, "GLOBAL" },
|
||||
{ OVERRIDE_OFF, "OFF" },
|
||||
{ OVERRIDE_ON, "ON" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_FailsafeModes[] = {
|
||||
{ FAILSAFE_NOT_SET, "NOT_SET" },
|
||||
{ FAILSAFE_HOLD, "HOLD" },
|
||||
{ FAILSAFE_CUSTOM, "CUSTOM" },
|
||||
{ FAILSAFE_NOPULSES, "NOPULSES" },
|
||||
{ FAILSAFE_RECEIVER, "RECEIVER" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_TelemetrySensorFormula[] = {
|
||||
{ TELEM_FORMULA_ADD, "FORMULA_ADD" },
|
||||
{ TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" },
|
||||
{ TELEM_FORMULA_MIN, "FORMULA_MIN" },
|
||||
{ TELEM_FORMULA_MAX, "FORMULA_MAX" },
|
||||
{ TELEM_FORMULA_MULTIPLY, "FORMULA_MULTIPLY" },
|
||||
{ TELEM_FORMULA_TOTALIZE, "FORMULA_TOTALIZE" },
|
||||
{ TELEM_FORMULA_CELL, "FORMULA_CELL" },
|
||||
{ TELEM_FORMULA_CONSUMPTION, "FORMULA_CONSUMPTION" },
|
||||
{ TELEM_FORMULA_DIST, "FORMULA_DIST" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_TelemetrySensorType[] = {
|
||||
{ TELEM_TYPE_CUSTOM, "TYPE_CUSTOM" },
|
||||
{ TELEM_TYPE_CALCULATED, "TYPE_CALCULATED" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_USBJoystickIfMode[] = {
|
||||
{ USBJOYS_JOYSTICK, "JOYSTICK" },
|
||||
{ USBJOYS_GAMEPAD, "GAMEPAD" },
|
||||
{ USBJOYS_MULTIAXIS, "MULTIAXIS" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
const struct YamlIdStr enum_USBJoystickCh[] = {
|
||||
{ USBJOYS_CH_NONE, "CH_NONE" },
|
||||
{ USBJOYS_CH_BUTTON, "CH_BUTTON" },
|
||||
{ USBJOYS_CH_AXIS, "CH_AXIS" },
|
||||
{ USBJOYS_CH_SIM, "CH_SIM" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
//
|
||||
// Structs last
|
||||
//
|
||||
|
||||
static const struct YamlNode struct_CalibData[] = {
|
||||
YAML_IDX_CUST("calib",r_calib,w_calib),
|
||||
YAML_SIGNED( "mid", 16 ),
|
||||
YAML_SIGNED( "spanNeg", 16 ),
|
||||
YAML_SIGNED( "spanPos", 16 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_signed_16[] = {
|
||||
YAML_IDX,
|
||||
YAML_SIGNED( "val", 16 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_TrainerMix[] = {
|
||||
YAML_IDX,
|
||||
YAML_UNSIGNED( "srcChn", 6 ),
|
||||
YAML_ENUM("mode", 2, enum_TrainerMultiplex),
|
||||
YAML_SIGNED( "studWeight", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_TrainerData[] = {
|
||||
YAML_ARRAY("calib", 16, 4, struct_signed_16, NULL),
|
||||
YAML_ARRAY("mix", 16, 4, struct_TrainerMix, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_1[] = {
|
||||
YAML_STRING("name", 6),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_2[] = {
|
||||
YAML_SIGNED( "val", 16 ),
|
||||
YAML_UNSIGNED( "mode", 8 ),
|
||||
YAML_UNSIGNED( "param", 8 ),
|
||||
YAML_SIGNED( "spare", 32 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_3[] = {
|
||||
YAML_SIGNED( "val1", 32 ),
|
||||
YAML_SIGNED( "val2", 32 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode union_anonymous_0_elmts[] = {
|
||||
YAML_STRUCT("play", 48, struct_anonymous_1, NULL),
|
||||
YAML_STRUCT("all", 64, struct_anonymous_2, NULL),
|
||||
YAML_STRUCT("clear", 64, struct_anonymous_3, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_CustomFunctionData[] = {
|
||||
YAML_IDX,
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
YAML_ENUM("func", 6, enum_Functions),
|
||||
YAML_CUSTOM("def",r_customFn,w_customFn),
|
||||
YAML_PADDING( 64 ),
|
||||
YAML_PADDING( 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_RadioData[] = {
|
||||
YAML_UNSIGNED( "manuallyEdited", 1 ),
|
||||
YAML_PADDING( 7 ),
|
||||
YAML_CUSTOM("semver",nullptr,w_semver),
|
||||
YAML_CUSTOM("board",nullptr,w_board),
|
||||
YAML_ARRAY("calib", 48, 12, struct_CalibData, NULL),
|
||||
YAML_PADDING( 16 ),
|
||||
YAML_SIGNED( "currModel", 8 ),
|
||||
YAML_UNSIGNED( "contrast", 8 ),
|
||||
YAML_UNSIGNED( "vBatWarn", 8 ),
|
||||
YAML_SIGNED( "txVoltageCalibration", 8 ),
|
||||
YAML_ENUM("backlightMode", 3, enum_BacklightMode),
|
||||
YAML_ENUM("antennaMode", 2, enum_AntennaModes),
|
||||
YAML_UNSIGNED( "disableRtcWarning", 1 ),
|
||||
YAML_UNSIGNED( "keysBacklight", 1 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_ENUM("internalModule", 8, enum_ModuleType),
|
||||
YAML_STRUCT("trainer", 128, struct_TrainerData, NULL),
|
||||
YAML_UNSIGNED( "view", 8 ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_UNSIGNED( "fai", 1 ),
|
||||
YAML_SIGNED_CUST( "beepMode", 2, r_beeperMode, w_beeperMode ),
|
||||
YAML_UNSIGNED( "alarmsFlash", 1 ),
|
||||
YAML_UNSIGNED( "disableMemoryWarning", 1 ),
|
||||
YAML_UNSIGNED( "disableAlarmWarning", 1 ),
|
||||
YAML_UNSIGNED( "stickMode", 2 ),
|
||||
YAML_SIGNED( "timezone", 5 ),
|
||||
YAML_UNSIGNED( "adjustRTC", 1 ),
|
||||
YAML_UNSIGNED( "inactivityTimer", 8 ),
|
||||
YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr),
|
||||
YAML_UNSIGNED( "internalModuleBaudrate", 3 ),
|
||||
YAML_SIGNED( "splashMode", 3 ),
|
||||
YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ),
|
||||
YAML_SIGNED( "switchesDelay", 8 ),
|
||||
YAML_UNSIGNED( "lightAutoOff", 8 ),
|
||||
YAML_UNSIGNED( "templateSetup", 8 ),
|
||||
YAML_SIGNED( "PPM_Multiplier", 8 ),
|
||||
YAML_SIGNED_CUST( "hapticLength", 8, r_5pos, w_5pos ),
|
||||
YAML_SIGNED_CUST( "beepLength", 3, r_5pos, w_5pos ),
|
||||
YAML_SIGNED_CUST( "hapticStrength", 3, r_5pos, w_5pos ),
|
||||
YAML_UNSIGNED( "gpsFormat", 1 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED_CUST( "speakerPitch", 8, r_spPitch, w_spPitch ),
|
||||
YAML_SIGNED_CUST( "speakerVolume", 8, r_vol, w_vol ),
|
||||
YAML_SIGNED_CUST( "vBatMin", 8, r_vbat_min, w_vbat_min ),
|
||||
YAML_SIGNED_CUST( "vBatMax", 8, r_vbat_max, w_vbat_max ),
|
||||
YAML_UNSIGNED( "backlightBright", 8 ),
|
||||
YAML_UNSIGNED( "globalTimer", 32 ),
|
||||
YAML_UNSIGNED( "bluetoothBaudrate", 4 ),
|
||||
YAML_ENUM("bluetoothMode", 4, enum_BluetoothModes),
|
||||
YAML_UNSIGNED( "countryCode", 2 ),
|
||||
YAML_SIGNED( "pwrOnSpeed", 3 ),
|
||||
YAML_SIGNED( "pwrOffSpeed", 3 ),
|
||||
YAML_CUSTOM("jitterFilter",r_jitterFilter,nullptr),
|
||||
YAML_UNSIGNED( "noJitterFilter", 1 ),
|
||||
YAML_UNSIGNED( "imperial", 1 ),
|
||||
YAML_UNSIGNED( "disableRssiPoweroffAlarm", 1 ),
|
||||
YAML_UNSIGNED( "USBMode", 2 ),
|
||||
YAML_UNSIGNED( "jackMode", 2 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_STRING("ttsLanguage", 2),
|
||||
YAML_SIGNED_CUST( "beepVolume", 4, r_5pos, w_5pos ),
|
||||
YAML_SIGNED_CUST( "wavVolume", 4, r_5pos, w_5pos ),
|
||||
YAML_SIGNED_CUST( "varioVolume", 4, r_5pos, w_5pos ),
|
||||
YAML_SIGNED_CUST( "backgroundVolume", 4, r_5pos, w_5pos ),
|
||||
YAML_SIGNED_CUST( "varioPitch", 8, r_vPitch, w_vPitch ),
|
||||
YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ),
|
||||
YAML_SIGNED( "varioRepeat", 8 ),
|
||||
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
|
||||
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
|
||||
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
|
||||
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
|
||||
YAML_ARRAY("sticksConfig", 0, MAX_STICKS, struct_stickConfig, stick_name_valid),
|
||||
YAML_ARRAY("slidersConfig", 0, MAX_POTS, struct_sliderConfig, nullptr),
|
||||
YAML_ARRAY("potsConfig", 4, 8, struct_potConfig, nullptr),
|
||||
YAML_ARRAY("switchConfig", 2, 32, struct_switchConfig, nullptr),
|
||||
YAML_UNSIGNED( "backlightColor", 8 ),
|
||||
YAML_STRING("ownerRegistrationID", 8),
|
||||
YAML_CUSTOM("rotEncDirection",r_rotEncDirection,nullptr),
|
||||
YAML_UNSIGNED( "rotEncMode", 2 ),
|
||||
YAML_SIGNED( "uartSampleMode", 2 ),
|
||||
YAML_PADDING( 3 ),
|
||||
YAML_UNSIGNED( "audioMuteEnable", 1 ),
|
||||
YAML_UNSIGNED( "radioGFDisabled", 1 ),
|
||||
YAML_UNSIGNED( "radioTrainerDisabled", 1 ),
|
||||
YAML_UNSIGNED( "modelHeliDisabled", 1 ),
|
||||
YAML_UNSIGNED( "modelFMDisabled", 1 ),
|
||||
YAML_UNSIGNED( "modelCurvesDisabled", 1 ),
|
||||
YAML_UNSIGNED( "modelGVDisabled", 1 ),
|
||||
YAML_UNSIGNED( "modelLSDisabled", 1 ),
|
||||
YAML_UNSIGNED( "modelSFDisabled", 1 ),
|
||||
YAML_UNSIGNED( "modelCustomScriptsDisabled", 1 ),
|
||||
YAML_UNSIGNED( "modelTelemetryDisabled", 1 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_unsigned_8[] = {
|
||||
YAML_IDX,
|
||||
YAML_UNSIGNED( "val", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_ModelHeader[] = {
|
||||
YAML_STRING("name", 10),
|
||||
YAML_ARRAY("modelId", 8, 2, struct_unsigned_8, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_TimerData[] = {
|
||||
YAML_IDX,
|
||||
YAML_UNSIGNED( "start", 22 ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
YAML_SIGNED( "value", 22 ),
|
||||
YAML_ENUM("mode", 3, enum_TimerModes),
|
||||
YAML_UNSIGNED( "countdownBeep", 2 ),
|
||||
YAML_UNSIGNED( "minuteBeep", 1 ),
|
||||
YAML_UNSIGNED( "persistent", 2 ),
|
||||
YAML_SIGNED( "countdownStart", 2 ),
|
||||
YAML_UNSIGNED( "showElapsed", 1 ),
|
||||
YAML_UNSIGNED( "extraHaptic", 1 ),
|
||||
YAML_PADDING( 6 ),
|
||||
YAML_STRING("name", 3),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_CurveRef[] = {
|
||||
YAML_UNSIGNED( "type", 8 ),
|
||||
YAML_SIGNED_CUST( "value", 8, in_read_weight, in_write_weight ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_MixData[] = {
|
||||
YAML_SIGNED_CUST( "weight", 11, in_read_weight, in_write_weight ),
|
||||
YAML_UNSIGNED( "destCh", 5 ),
|
||||
YAML_UNSIGNED_CUST( "srcRaw", 10, r_mixSrcRaw, w_mixSrcRaw ),
|
||||
YAML_UNSIGNED( "carryTrim", 1 ),
|
||||
YAML_UNSIGNED( "mixWarn", 2 ),
|
||||
YAML_ENUM("mltpx", 2, enum_MixerMultiplex),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_SIGNED_CUST( "offset", 13, in_read_weight, in_write_weight ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_STRUCT("curve", 16, struct_CurveRef, NULL),
|
||||
YAML_UNSIGNED( "delayUp", 8 ),
|
||||
YAML_UNSIGNED( "delayDown", 8 ),
|
||||
YAML_UNSIGNED( "speedUp", 8 ),
|
||||
YAML_UNSIGNED( "speedDown", 8 ),
|
||||
YAML_STRING("name", 6),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_LimitData[] = {
|
||||
YAML_IDX,
|
||||
YAML_SIGNED_CUST( "min", 11, in_read_weight, in_write_weight ),
|
||||
YAML_SIGNED_CUST( "max", 11, in_read_weight, in_write_weight ),
|
||||
YAML_SIGNED( "ppmCenter", 10 ),
|
||||
YAML_SIGNED_CUST( "offset", 11, in_read_weight, in_write_weight ),
|
||||
YAML_UNSIGNED( "symetrical", 1 ),
|
||||
YAML_UNSIGNED( "revert", 1 ),
|
||||
YAML_PADDING( 3 ),
|
||||
YAML_SIGNED( "curve", 8 ),
|
||||
YAML_STRING("name", 4),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_ExpoData[] = {
|
||||
YAML_UNSIGNED( "mode", 2 ),
|
||||
YAML_UNSIGNED( "scale", 14 ),
|
||||
YAML_CUSTOM("carryTrim",r_carryTrim,nullptr),
|
||||
YAML_SIGNED( "trimSource", 6 ),
|
||||
YAML_UNSIGNED_CUST( "srcRaw", 10, r_mixSrcRaw, w_mixSrcRaw ),
|
||||
YAML_UNSIGNED( "chn", 5 ),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
YAML_UNSIGNED_CUST( "flightModes", 9, r_flightModes, w_flightModes ),
|
||||
YAML_SIGNED_CUST( "weight", 8, in_read_weight, in_write_weight ),
|
||||
YAML_STRING("name", 6),
|
||||
YAML_SIGNED_CUST( "offset", 8, in_read_weight, in_write_weight ),
|
||||
YAML_STRUCT("curve", 16, struct_CurveRef, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_CurveHeader[] = {
|
||||
YAML_IDX,
|
||||
YAML_UNSIGNED( "type", 1 ),
|
||||
YAML_UNSIGNED( "smooth", 1 ),
|
||||
YAML_SIGNED( "points", 6 ),
|
||||
YAML_STRING("name", 3),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_signed_8[] = {
|
||||
YAML_IDX,
|
||||
YAML_SIGNED( "val", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_LogicalSwitchData[] = {
|
||||
YAML_IDX,
|
||||
YAML_ENUM("func", 8, enum_LogicalSwitchesFunctions),
|
||||
YAML_CUSTOM("def",r_logicSw,w_logicSw),
|
||||
YAML_PADDING( 10 ),
|
||||
YAML_PADDING( 10 ),
|
||||
YAML_SIGNED_CUST( "andsw", 10, r_swtchSrc, w_swtchSrc ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_PADDING( 16 ),
|
||||
YAML_UNSIGNED( "delay", 8 ),
|
||||
YAML_UNSIGNED( "duration", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_SwashRingData[] = {
|
||||
YAML_ENUM("type", 8, enum_SwashType),
|
||||
YAML_UNSIGNED( "value", 8 ),
|
||||
YAML_UNSIGNED_CUST( "collectiveSource", 8, r_mixSrcRaw, w_mixSrcRaw ),
|
||||
YAML_UNSIGNED_CUST( "aileronSource", 8, r_mixSrcRaw, w_mixSrcRaw ),
|
||||
YAML_UNSIGNED_CUST( "elevatorSource", 8, r_mixSrcRaw, w_mixSrcRaw ),
|
||||
YAML_SIGNED( "collectiveWeight", 8 ),
|
||||
YAML_SIGNED( "aileronWeight", 8 ),
|
||||
YAML_SIGNED( "elevatorWeight", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_trim_t[] = {
|
||||
YAML_IDX,
|
||||
YAML_SIGNED( "value", 11 ),
|
||||
YAML_UNSIGNED( "mode", 5 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_FlightModeData[] = {
|
||||
YAML_IDX,
|
||||
YAML_ARRAY("trim", 16, 8, struct_trim_t, NULL),
|
||||
YAML_STRING("name", 6),
|
||||
YAML_SIGNED_CUST( "swtch", 10, r_swtchSrc, w_swtchSrc ),
|
||||
YAML_PADDING( 6 ),
|
||||
YAML_UNSIGNED( "fadeIn", 8 ),
|
||||
YAML_UNSIGNED( "fadeOut", 8 ),
|
||||
YAML_ARRAY("gvars", 16, 9, struct_signed_16, gvar_is_active),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_GVarData[] = {
|
||||
YAML_IDX,
|
||||
YAML_STRING("name", 3),
|
||||
YAML_UNSIGNED( "min", 12 ),
|
||||
YAML_UNSIGNED( "max", 12 ),
|
||||
YAML_UNSIGNED( "popup", 1 ),
|
||||
YAML_UNSIGNED( "prec", 1 ),
|
||||
YAML_UNSIGNED( "unit", 2 ),
|
||||
YAML_PADDING( 4 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_VarioData[] = {
|
||||
YAML_UNSIGNED_CUST( "source", 7, r_tele_sensor, w_tele_sensor ),
|
||||
YAML_UNSIGNED( "centerSilent", 1 ),
|
||||
YAML_SIGNED( "centerMax", 8 ),
|
||||
YAML_SIGNED( "centerMin", 8 ),
|
||||
YAML_SIGNED( "min", 8 ),
|
||||
YAML_SIGNED( "max", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_RssiAlarmData[] = {
|
||||
YAML_CUSTOM("disabled",r_rssiDisabled,nullptr),
|
||||
YAML_CUSTOM("warning",r_rssiWarning,nullptr),
|
||||
YAML_CUSTOM("critical",r_rssiCritical,nullptr),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_RFAlarmData[] = {
|
||||
YAML_SIGNED( "warning", 8 ),
|
||||
YAML_SIGNED( "critical", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_PpmModule[] = {
|
||||
YAML_SIGNED( "delay", 6 ),
|
||||
YAML_UNSIGNED( "pulsePol", 1 ),
|
||||
YAML_UNSIGNED( "outputType", 1 ),
|
||||
YAML_SIGNED( "frameLength", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_5[] = {
|
||||
YAML_PADDING( 8 ),
|
||||
YAML_UNSIGNED( "disableTelemetry", 1 ),
|
||||
YAML_UNSIGNED( "disableMapping", 1 ),
|
||||
YAML_UNSIGNED( "autoBindMode", 1 ),
|
||||
YAML_UNSIGNED( "lowPowerMode", 1 ),
|
||||
YAML_UNSIGNED( "receiverTelemetryOff", 1 ),
|
||||
YAML_UNSIGNED( "receiverHigherChannels", 1 ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_SIGNED( "optionValue", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_6[] = {
|
||||
YAML_UNSIGNED( "power", 2 ),
|
||||
YAML_PADDING( 2 ),
|
||||
YAML_UNSIGNED( "receiverTelemetryOff", 1 ),
|
||||
YAML_UNSIGNED( "receiverHigherChannels", 1 ),
|
||||
YAML_SIGNED( "antennaMode", 2 ),
|
||||
YAML_PADDING( 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_7[] = {
|
||||
YAML_PADDING( 6 ),
|
||||
YAML_UNSIGNED( "noninverted", 1 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_SIGNED( "refreshRate", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_string_64[] = {
|
||||
YAML_IDX,
|
||||
YAML_STRING("val", 8),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_8[] = {
|
||||
YAML_UNSIGNED( "receivers", 7 ),
|
||||
YAML_UNSIGNED( "racingMode", 1 ),
|
||||
YAML_ARRAY("receiverName", 64, 3, struct_string_64, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_9[] = {
|
||||
YAML_ARRAY("rx_id", 8, 4, struct_unsigned_8, NULL),
|
||||
YAML_UNSIGNED( "mode", 3 ),
|
||||
YAML_UNSIGNED( "rfPower", 1 ),
|
||||
YAML_UNSIGNED( "reserved", 4 ),
|
||||
YAML_ARRAY("rx_freq", 8, 2, struct_unsigned_8, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_10[] = {
|
||||
YAML_UNSIGNED( "emi", 2 ),
|
||||
YAML_UNSIGNED( "telemetry", 1 ),
|
||||
YAML_UNSIGNED( "phyMode", 3 ),
|
||||
YAML_UNSIGNED( "reserved", 2 ),
|
||||
YAML_UNSIGNED( "rfPower", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_11[] = {
|
||||
YAML_UNSIGNED( "raw12bits", 1 ),
|
||||
YAML_UNSIGNED( "telemetryBaudrate", 3 ),
|
||||
YAML_PADDING( 4 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_12[] = {
|
||||
YAML_UNSIGNED( "telemetryBaudrate", 3 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_13[] = {
|
||||
YAML_UNSIGNED( "flags", 8 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode union_anonymous_4_elmts[] = {
|
||||
YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL),
|
||||
YAML_STRUCT("ppm", 16, struct_PpmModule, NULL),
|
||||
YAML_STRUCT("multi", 24, struct_anonymous_5, NULL),
|
||||
YAML_STRUCT("pxx", 16, struct_anonymous_6, NULL),
|
||||
YAML_STRUCT("sbus", 16, struct_anonymous_7, NULL),
|
||||
YAML_STRUCT("pxx2", 200, struct_anonymous_8, NULL),
|
||||
YAML_STRUCT("flysky", 56, struct_anonymous_9, NULL),
|
||||
YAML_STRUCT("afhds3", 16, struct_anonymous_10, NULL),
|
||||
YAML_STRUCT("ghost", 8, struct_anonymous_11, NULL),
|
||||
YAML_STRUCT("crsf", 8, struct_anonymous_12, NULL),
|
||||
YAML_STRUCT("dsmp", 8, struct_anonymous_13, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_ModuleData[] = {
|
||||
YAML_IDX,
|
||||
YAML_ENUM("type", 8, enum_ModuleType),
|
||||
YAML_CUSTOM("subType",r_modSubtype,w_modSubtype),
|
||||
YAML_UNSIGNED( "channelsStart", 8 ),
|
||||
YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ),
|
||||
YAML_ENUM("failsafeMode", 4, enum_FailsafeModes),
|
||||
YAML_PADDING( 4 ),
|
||||
YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_TrainerModuleData[] = {
|
||||
YAML_UNSIGNED_CUST( "mode", 8, r_trainerMode, w_trainerMode ),
|
||||
YAML_UNSIGNED( "channelsStart", 8 ),
|
||||
YAML_SIGNED( "channelsCount", 8 ),
|
||||
YAML_SIGNED( "frameLength", 8 ),
|
||||
YAML_SIGNED( "delay", 6 ),
|
||||
YAML_UNSIGNED( "pulsePol", 1 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode union_ScriptDataInput_elmts[] = {
|
||||
YAML_SIGNED( "value", 16 ),
|
||||
YAML_UNSIGNED_CUST( "source", 16, r_mixSrcRaw, w_mixSrcRaw ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode union_ScriptDataInput[] = {
|
||||
YAML_IDX,
|
||||
YAML_UNION("u", 16, union_ScriptDataInput_elmts, select_script_input),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_ScriptData[] = {
|
||||
YAML_IDX,
|
||||
YAML_STRING("file", 6),
|
||||
YAML_STRING("name", 6),
|
||||
YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_string_24[] = {
|
||||
YAML_IDX,
|
||||
YAML_STRING("val", 3),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode union_anonymous_14_elmts[] = {
|
||||
YAML_UNSIGNED( "id", 16 ),
|
||||
YAML_UNSIGNED( "persistentValue", 16 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_16[] = {
|
||||
YAML_UNSIGNED( "physID", 5 ),
|
||||
YAML_UNSIGNED( "rxIndex", 3 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode union_anonymous_15_elmts[] = {
|
||||
YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL),
|
||||
YAML_UNSIGNED( "instance", 8 ),
|
||||
YAML_ENUM("formula", 8, enum_TelemetrySensorFormula),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_18[] = {
|
||||
YAML_UNSIGNED( "ratio", 16 ),
|
||||
YAML_SIGNED( "offset", 16 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_19[] = {
|
||||
YAML_UNSIGNED( "source", 8 ),
|
||||
YAML_UNSIGNED( "index", 8 ),
|
||||
YAML_PADDING( 16 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_20[] = {
|
||||
YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_21[] = {
|
||||
YAML_UNSIGNED( "source", 8 ),
|
||||
YAML_PADDING( 24 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_anonymous_22[] = {
|
||||
YAML_UNSIGNED( "gps", 8 ),
|
||||
YAML_UNSIGNED( "alt", 8 ),
|
||||
YAML_PADDING( 16 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode union_anonymous_17_elmts[] = {
|
||||
YAML_STRUCT("custom", 32, struct_anonymous_18, NULL),
|
||||
YAML_STRUCT("cell", 32, struct_anonymous_19, NULL),
|
||||
YAML_STRUCT("calc", 32, struct_anonymous_20, NULL),
|
||||
YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL),
|
||||
YAML_STRUCT("dist", 32, struct_anonymous_22, NULL),
|
||||
YAML_UNSIGNED( "param", 32 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_TelemetrySensor[] = {
|
||||
YAML_IDX,
|
||||
YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1),
|
||||
YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2),
|
||||
YAML_STRING("label", 4),
|
||||
YAML_UNSIGNED( "subId", 8 ),
|
||||
YAML_ENUM("type", 1, enum_TelemetrySensorType),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNSIGNED( "unit", 6 ),
|
||||
YAML_UNSIGNED( "prec", 2 ),
|
||||
YAML_UNSIGNED( "autoOffset", 1 ),
|
||||
YAML_UNSIGNED( "filter", 1 ),
|
||||
YAML_UNSIGNED( "logs", 1 ),
|
||||
YAML_UNSIGNED( "persistent", 1 ),
|
||||
YAML_UNSIGNED( "onlyPositive", 1 ),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_FrSkyBarData[] = {
|
||||
YAML_IDX,
|
||||
YAML_UNSIGNED_CUST( "source", 16, r_mixSrcRaw, w_mixSrcRaw ),
|
||||
YAML_SIGNED( "barMin", 16 ),
|
||||
YAML_SIGNED( "barMax", 16 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_LineDataSource[] = {
|
||||
YAML_IDX,
|
||||
YAML_UNSIGNED_CUST( "val", 16, r_mixSrcRaw, w_mixSrcRaw ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_FrSkyLineData[] = {
|
||||
YAML_IDX,
|
||||
YAML_ARRAY("sources", 16, 2, struct_LineDataSource, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_TelemetryScriptData[] = {
|
||||
YAML_STRING("file", 6),
|
||||
YAML_ARRAY("inputs", 16, 8, struct_signed_16, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode union_TelemetryScreenData_u_elmts[] = {
|
||||
YAML_ARRAY("bars", 48, 4, struct_FrSkyBarData, NULL),
|
||||
YAML_ARRAY("lines", 32, 4, struct_FrSkyLineData, NULL),
|
||||
YAML_STRUCT("script", 176, struct_TelemetryScriptData, NULL),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_TelemetryScreenData[] = {
|
||||
YAML_IDX,
|
||||
YAML_CUSTOM("type",r_tele_screen_type,w_tele_screen_type),
|
||||
YAML_UNION("u", 192, union_TelemetryScreenData_u_elmts, select_tele_screen_data),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_USBJoystickChData[] = {
|
||||
YAML_IDX,
|
||||
YAML_ENUM("mode", 3, enum_USBJoystickCh),
|
||||
YAML_UNSIGNED( "inversion", 1 ),
|
||||
YAML_UNSIGNED( "param", 4 ),
|
||||
YAML_UNSIGNED( "btn_num", 5 ),
|
||||
YAML_UNSIGNED( "switch_npos", 3 ),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_ModelData[] = {
|
||||
YAML_CUSTOM("semver",nullptr,w_semver),
|
||||
YAML_STRUCT("header", 96, struct_ModelHeader, NULL),
|
||||
YAML_ARRAY("timers", 96, 3, struct_TimerData, NULL),
|
||||
YAML_UNSIGNED( "telemetryProtocol", 3 ),
|
||||
YAML_UNSIGNED( "thrTrim", 1 ),
|
||||
YAML_UNSIGNED( "noGlobalFunctions", 1 ),
|
||||
YAML_UNSIGNED( "displayTrims", 2 ),
|
||||
YAML_UNSIGNED( "ignoreSensorIds", 1 ),
|
||||
YAML_SIGNED( "trimInc", 3 ),
|
||||
YAML_UNSIGNED( "disableThrottleWarning", 1 ),
|
||||
YAML_UNSIGNED( "displayChecklist", 1 ),
|
||||
YAML_UNSIGNED( "extendedLimits", 1 ),
|
||||
YAML_UNSIGNED( "extendedTrims", 1 ),
|
||||
YAML_UNSIGNED( "throttleReversed", 1 ),
|
||||
YAML_UNSIGNED( "enableCustomThrottleWarning", 1 ),
|
||||
YAML_UNSIGNED( "disableTelemetryWarning", 1 ),
|
||||
YAML_UNSIGNED( "showInstanceIds", 1 ),
|
||||
YAML_PADDING( 5 ),
|
||||
YAML_SIGNED( "customThrottleWarningPosition", 8 ),
|
||||
YAML_UNSIGNED( "beepANACenter", 16 ),
|
||||
YAML_ARRAY("mixData", 160, 64, struct_MixData, NULL),
|
||||
YAML_ARRAY("limitData", 88, 32, struct_LimitData, NULL),
|
||||
YAML_ARRAY("expoData", 136, 64, struct_ExpoData, NULL),
|
||||
YAML_ARRAY("curves", 32, 32, struct_CurveHeader, NULL),
|
||||
YAML_ARRAY("points", 8, 512, struct_signed_8, NULL),
|
||||
YAML_ARRAY("logicalSw", 72, 64, struct_LogicalSwitchData, NULL),
|
||||
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
|
||||
YAML_STRUCT("swashR", 64, struct_SwashRingData, swash_is_active),
|
||||
YAML_ARRAY("flightModeData", 352, 9, struct_FlightModeData, fmd_is_active),
|
||||
YAML_UNSIGNED_CUST( "thrTraceSrc", 8, r_thrSrc, w_thrSrc ),
|
||||
YAML_CUSTOM("switchWarningState",r_swtchWarn,w_swtchWarn),
|
||||
YAML_PADDING( 64 ),
|
||||
YAML_ARRAY("gvars", 56, 9, struct_GVarData, NULL),
|
||||
YAML_STRUCT("varioData", 40, struct_VarioData, NULL),
|
||||
YAML_UNSIGNED_CUST( "rssiSource", 8, r_tele_sensor, w_tele_sensor ),
|
||||
YAML_STRUCT("rssiAlarms", 0, struct_RssiAlarmData, NULL),
|
||||
YAML_STRUCT("rfAlarms", 16, struct_RFAlarmData, NULL),
|
||||
YAML_UNSIGNED( "thrTrimSw", 3 ),
|
||||
YAML_ENUM("potsWarnMode", 2, enum_PotsWarnMode),
|
||||
YAML_ENUM("jitterFilter", 2, enum_ModelOverridableEnable),
|
||||
YAML_PADDING( 1 ),
|
||||
YAML_ARRAY("moduleData", 232, 2, struct_ModuleData, NULL),
|
||||
YAML_ARRAY("failsafeChannels", 16, 32, struct_signed_16, NULL),
|
||||
YAML_STRUCT("trainerData", 40, struct_TrainerModuleData, NULL),
|
||||
YAML_ARRAY("scriptsData", 192, 7, struct_ScriptData, NULL),
|
||||
YAML_ARRAY("inputNames", 24, 32, struct_string_24, NULL),
|
||||
YAML_UNSIGNED( "potsWarnEnabled", 8 ),
|
||||
YAML_ARRAY("potsWarnPosition", 8, 8, struct_signed_8, NULL),
|
||||
YAML_ARRAY("telemetrySensors", 112, 40, struct_TelemetrySensor, NULL),
|
||||
YAML_PADDING( 8 ),
|
||||
YAML_ARRAY("screens", 192, 4, struct_TelemetryScreenData, NULL),
|
||||
YAML_UNSIGNED( "view", 8 ),
|
||||
YAML_STRING("modelRegistrationID", 8),
|
||||
YAML_UNSIGNED( "functionSwitchConfig", 16 ),
|
||||
YAML_UNSIGNED( "functionSwitchGroup", 16 ),
|
||||
YAML_UNSIGNED( "functionSwitchStartConfig", 16 ),
|
||||
YAML_UNSIGNED( "functionSwitchLogicalState", 8 ),
|
||||
YAML_ARRAY("switchNames", 24, 6, struct_string_24, NULL),
|
||||
YAML_UNSIGNED( "usbJoystickExtMode", 1 ),
|
||||
YAML_ENUM("usbJoystickIfMode", 3, enum_USBJoystickIfMode),
|
||||
YAML_UNSIGNED( "usbJoystickCircularCut", 4 ),
|
||||
YAML_ARRAY("usbJoystickCh", 16, 26, struct_USBJoystickChData, NULL),
|
||||
YAML_ENUM("radioGFDisabled", 2, enum_ModelOverridableEnable),
|
||||
YAML_ENUM("radioTrainerDisabled", 2, enum_ModelOverridableEnable),
|
||||
YAML_ENUM("modelHeliDisabled", 2, enum_ModelOverridableEnable),
|
||||
YAML_ENUM("modelFMDisabled", 2, enum_ModelOverridableEnable),
|
||||
YAML_ENUM("modelCurvesDisabled", 2, enum_ModelOverridableEnable),
|
||||
YAML_ENUM("modelGVDisabled", 2, enum_ModelOverridableEnable),
|
||||
YAML_ENUM("modelLSDisabled", 2, enum_ModelOverridableEnable),
|
||||
YAML_ENUM("modelSFDisabled", 2, enum_ModelOverridableEnable),
|
||||
YAML_ENUM("modelCustomScriptsDisabled", 2, enum_ModelOverridableEnable),
|
||||
YAML_ENUM("modelTelemetryDisabled", 2, enum_ModelOverridableEnable),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_PartialModel[] = {
|
||||
YAML_STRUCT("header", 96, struct_ModelHeader, NULL),
|
||||
YAML_ARRAY("timers", 96, 3, struct_TimerData, NULL),
|
||||
YAML_END
|
||||
};
|
||||
|
||||
#define MAX_RADIODATA_MODELDATA_PARTIALMODEL_STR_LEN 29
|
||||
|
||||
static const struct YamlNode __RadioData_root_node = YAML_ROOT( struct_RadioData );
|
||||
|
||||
const YamlNode* get_radiodata_nodes()
|
||||
{
|
||||
return &__RadioData_root_node;
|
||||
}
|
||||
static const struct YamlNode __ModelData_root_node = YAML_ROOT( struct_ModelData );
|
||||
|
||||
const YamlNode* get_modeldata_nodes()
|
||||
{
|
||||
return &__ModelData_root_node;
|
||||
}
|
||||
static const struct YamlNode __PartialModel_root_node = YAML_ROOT( struct_PartialModel );
|
||||
|
||||
const YamlNode* get_partialmodel_nodes()
|
||||
{
|
||||
return &__PartialModel_root_node;
|
||||
}
|
||||
|
|
@ -78,7 +78,7 @@ uint8_t potsPos[MAX_POTS];
|
|||
((sw) % XPOTS_MULTIPOS_COUNT))
|
||||
|
||||
#if defined(FUNCTION_SWITCHES)
|
||||
// Function switches
|
||||
// Customizable switches
|
||||
//
|
||||
// Non pushed : SWSRC_Sx0 = -1024 = Sx(up) = state 0
|
||||
// Pushed : SWSRC_Sx2 = +1024 = Sx(down) = state 1
|
||||
|
|
|
@ -60,21 +60,21 @@ uint8_t getXPotPosition(uint8_t idx);
|
|||
div_t switchInfo(int switchPosition);
|
||||
|
||||
// Lookup switch index by letter ('A' to 'Z')
|
||||
// note: no function switches
|
||||
// note: no customizable switches
|
||||
int switchLookupIdx(char c);
|
||||
|
||||
// Lookup switch index by name ('SA' to 'SZ')
|
||||
// note: no function switches
|
||||
// note: no customizable switches
|
||||
int switchLookupIdx(const char* name, size_t len);
|
||||
|
||||
// Get switch letter ('A' to 'Z')
|
||||
// note: no function switches
|
||||
// note: no customizable switches
|
||||
char switchGetLetter(uint8_t idx);
|
||||
|
||||
// note: no function switches
|
||||
// note: no customizable switches
|
||||
const char* switchGetCanonicalName(uint8_t idx);
|
||||
|
||||
// function switches supported
|
||||
// customizable switches supported
|
||||
void switchSetCustomName(uint8_t idx, const char* str, size_t len);
|
||||
const char* switchGetCustomName(uint8_t idx);
|
||||
bool switchHasCustomName(uint8_t idx);
|
||||
|
|
|
@ -48,6 +48,10 @@
|
|||
#define BOOTLOADER_KEYS 0x42
|
||||
#endif
|
||||
|
||||
#if defined(RADIO_T20)
|
||||
#define SECONDARY_BOOTLOADER_KEYS 0x1200
|
||||
#endif
|
||||
|
||||
#define APP_START_ADDRESS (uint32_t)(FIRMWARE_ADDRESS + BOOTLOADER_SIZE)
|
||||
|
||||
#if defined(EEPROM)
|
||||
|
@ -266,7 +270,11 @@ void bootloaderInitApp()
|
|||
if ((~(KEYS_GPIO_REG_BIND->IDR) & KEYS_GPIO_PIN_BIND) == false) {
|
||||
#else
|
||||
// LHR & RHL trims not pressed simultanously
|
||||
#if defined(SECONDARY_BOOTLOADER_KEYS)
|
||||
if (readTrims() != BOOTLOADER_KEYS && readTrims() != SECONDARY_BOOTLOADER_KEYS) {
|
||||
#else
|
||||
if (readTrims() != BOOTLOADER_KEYS) {
|
||||
#endif
|
||||
#endif
|
||||
// Start main application
|
||||
jumpTo(APP_START_ADDRESS);
|
||||
|
|
|
@ -141,6 +141,17 @@ elseif(PCB STREQUAL X7)
|
|||
add_definitions(-DRADIO_TPROV2)
|
||||
add_definitions(-DMANUFACTURER_JUMPER)
|
||||
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
|
||||
elseif(PCBREV STREQUAL T20)
|
||||
set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module")
|
||||
set(INTERNAL_MODULE_SERIAL YES)
|
||||
set(FLAVOUR t20)
|
||||
set(NAVIGATION_TYPE x7)
|
||||
set(ROTARY_ENCODER YES)
|
||||
set(CPU_TYPE_FULL STM32F407xE)
|
||||
add_definitions(-DFUNCTION_SWITCHES)
|
||||
add_definitions(-DRADIO_T20)
|
||||
add_definitions(-DMANUFACTURER_JUMPER)
|
||||
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
|
||||
elseif(PCBREV STREQUAL TLITE)
|
||||
set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module")
|
||||
set(INTERNAL_MODULE_SERIAL YES)
|
||||
|
|
|
@ -91,7 +91,11 @@ void sdMount();
|
|||
void sdDone();
|
||||
void sdPoll10ms();
|
||||
uint32_t sdMounted();
|
||||
#if defined(SD_PRESENT_GPIO)
|
||||
#define SD_CARD_PRESENT() ((SD_PRESENT_GPIO->IDR & SD_PRESENT_GPIO_PIN) == 0)
|
||||
#else
|
||||
#define SD_CARD_PRESENT() (true)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Flash Write driver
|
||||
|
@ -189,7 +193,7 @@ extern HardwareOptions hardwareOptions;
|
|||
#define BATTERY_WARN 87 // 8.7V
|
||||
#define BATTERY_MIN 85 // 8.5V
|
||||
#define BATTERY_MAX 115 // 11.5V
|
||||
#elif defined(PCBXLITE)
|
||||
#elif defined(PCBXLITE) || defined(RADIO_T20)
|
||||
// 2 x Li-Ion
|
||||
#define BATTERY_WARN 66 // 6.6V
|
||||
#define BATTERY_MIN 67 // 6.7V
|
||||
|
@ -296,6 +300,10 @@ uint8_t isBacklightEnabled();
|
|||
#define USB_NAME "Jumper TPro V2"
|
||||
#define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */
|
||||
#define USB_PRODUCT 'T', '-', 'P', 'R', 'O', ' ', 'V', '2' /* 8 Bytes */
|
||||
#elif defined(RADIO_T20)
|
||||
#define USB_NAME "Jumper T20"
|
||||
#define USB_MANUFACTURER 'J', 'U', 'M', 'P', 'E', 'R', ' ', ' ' /* 8 bytes */
|
||||
#define USB_PRODUCT 'T', '-', '2', '0', ' ', ' ', ' ', ' ' /* 8 Bytes */
|
||||
#elif defined(RADIO_COMMANDO8)
|
||||
#define USB_NAME "iFlight Commando 8"
|
||||
#define USB_MANUFACTURER 'i', 'F', 'l', 'i', 'g', 'h', 't', '-' /* 8 bytes */
|
||||
|
|
|
@ -214,6 +214,7 @@ void release_spi (void)
|
|||
{
|
||||
SD_DESELECT();
|
||||
rcvr_spi();
|
||||
delay_us(100);
|
||||
}
|
||||
|
||||
#ifdef SD_USE_DMA
|
||||
|
@ -315,13 +316,15 @@ void power_on (void)
|
|||
volatile BYTE dummyread;
|
||||
|
||||
card_power(1);
|
||||
|
||||
|
||||
#if defined(SD_PRESENT_GPIO)
|
||||
GPIO_InitStructure.GPIO_Pin = SD_PRESENT_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_Init(SD_PRESENT_GPIO, &GPIO_InitStructure);
|
||||
#endif
|
||||
|
||||
for (uint32_t Timer = 25000; Timer>0;Timer--); /* Wait for 250ms */
|
||||
|
||||
|
|
|
@ -145,6 +145,15 @@
|
|||
#define KEYS_GPIO_PIN_MINUS LL_GPIO_PIN_14 // PE.14
|
||||
#define KEYS_GPIO_REG_BIND GPIOD
|
||||
#define KEYS_GPIO_PIN_BIND LL_GPIO_PIN_9 // PD.09
|
||||
#elif defined(RADIO_T20)
|
||||
#define KEYS_GPIO_REG_PAGE GPIOD
|
||||
#define KEYS_GPIO_PIN_PAGE LL_GPIO_PIN_11 // PD.11
|
||||
#define KEYS_GPIO_REG_MENU GPIOD
|
||||
#define KEYS_GPIO_PIN_MENU LL_GPIO_PIN_10 // PD.10
|
||||
#define KEYS_GPIO_REG_EXIT GPIOD
|
||||
#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_12 // PD.12
|
||||
#define KEYS_GPIO_REG_ENTER GPIOE
|
||||
#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_7 // PE.7
|
||||
#elif defined(PCBX7)
|
||||
#define KEYS_GPIO_REG_PAGE GPIOD
|
||||
#define KEYS_GPIO_PIN_PAGE LL_GPIO_PIN_3 // PD.03
|
||||
|
@ -220,7 +229,7 @@
|
|||
#define USE_EXTI15_10_IRQ
|
||||
#define EXTI15_10_IRQ_Priority 5
|
||||
#endif
|
||||
#elif defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TPRO) || defined(RADIO_TPROV2)
|
||||
#elif defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_T20)
|
||||
#define ROTARY_ENCODER_NAVIGATION
|
||||
#define ROTARY_ENCODER_GPIO GPIOE
|
||||
#define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_9 // PE.09
|
||||
|
@ -339,6 +348,39 @@
|
|||
#define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_2 // PC.02
|
||||
#define TRIMS_GPIO_REG_RHL GPIOE
|
||||
#define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_4 // PE.04
|
||||
#elif defined(RADIO_T20)
|
||||
#define TRIMS_GPIO_REG_LHL GPIOD
|
||||
#define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_13 // PD.13
|
||||
#define TRIMS_GPIO_REG_LHR GPIOG
|
||||
#define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_2 // PG.02
|
||||
#define TRIMS_GPIO_REG_LVD GPIOG
|
||||
#define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_3 // PG.03
|
||||
#define TRIMS_GPIO_REG_LVU GPIOD
|
||||
#define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_14 // PD.14
|
||||
#define TRIMS_GPIO_REG_RVD GPIOF
|
||||
#define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_2 // PF.02
|
||||
#define TRIMS_GPIO_REG_RVU GPIOE
|
||||
#define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_6 // PE.06
|
||||
#define TRIMS_GPIO_REG_RHL GPIOE
|
||||
#define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_5 // PE.05
|
||||
#define TRIMS_GPIO_REG_RHR GPIOF
|
||||
#define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_1 // PF.01
|
||||
#define TRIMS_GPIO_REG_LSD GPIOG
|
||||
#define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_9 // PG.09
|
||||
#define TRIMS_GPIO_REG_LSU GPIOG
|
||||
#define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_10 // PG.10
|
||||
#define TRIMS_GPIO_REG_RSD GPIOD
|
||||
#define TRIMS_GPIO_PIN_RSD LL_GPIO_PIN_7 // PD.07
|
||||
#define TRIMS_GPIO_REG_RSU GPIOG
|
||||
#define TRIMS_GPIO_PIN_RSU LL_GPIO_PIN_12 // PG.12
|
||||
#define TRIMS_GPIO_REG_T7L GPIOB
|
||||
#define TRIMS_GPIO_PIN_T7L LL_GPIO_PIN_3 // PB.03
|
||||
#define TRIMS_GPIO_REG_T7R GPIOG
|
||||
#define TRIMS_GPIO_PIN_T7R LL_GPIO_PIN_15 // PG.15
|
||||
#define TRIMS_GPIO_REG_T8D GPIOG
|
||||
#define TRIMS_GPIO_PIN_T8D LL_GPIO_PIN_13 // PG.13
|
||||
#define TRIMS_GPIO_REG_T8U GPIOB
|
||||
#define TRIMS_GPIO_PIN_T8U LL_GPIO_PIN_4 // PB.04
|
||||
#elif defined(PCBX7) && !defined(RADIO_COMMANDO8)
|
||||
#define TRIMS_GPIO_REG_LHL GPIOD
|
||||
#define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_15 // PD.15
|
||||
|
@ -356,7 +398,7 @@
|
|||
#define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_2 // PC.02
|
||||
#define TRIMS_GPIO_REG_RHR GPIOE
|
||||
#define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_4 // PE.04
|
||||
#elif defined(PCBX7) && defined(RADIO_COMMANDO8)
|
||||
#elif defined(RADIO_COMMANDO8)
|
||||
#define TRIMS_GPIO_REG_LHL GPIOD
|
||||
#define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_15 // PD.15
|
||||
#define TRIMS_GPIO_REG_LHR GPIOC
|
||||
|
@ -456,7 +498,7 @@
|
|||
#define STORAGE_SWITCH_A
|
||||
#define HARDWARE_SWITCH_A
|
||||
#define SWITCHES_GPIO_REG_A GPIOE
|
||||
#define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_3 // PE.03
|
||||
#define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_3 // PE.03
|
||||
#elif defined(RADIO_TPRO) || defined(RADIO_TPROV2)
|
||||
#define STORAGE_SWITCH_A
|
||||
#define HARDWARE_SWITCH_A
|
||||
|
@ -464,6 +506,12 @@
|
|||
#define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_13 // PE.13
|
||||
#define SWITCHES_GPIO_REG_A_H GPIOE
|
||||
#define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_7 // PE.07
|
||||
#elif defined(RADIO_T20)
|
||||
#define STORAGE_SWITCH_A
|
||||
#define HARDWARE_SWITCH_A
|
||||
#define SWITCHES_A_INVERTED
|
||||
#define SWITCHES_GPIO_REG_A GPIOD
|
||||
#define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_0 // PD.00
|
||||
#elif defined(PCBX7)
|
||||
#define STORAGE_SWITCH_A
|
||||
#define HARDWARE_SWITCH_A
|
||||
|
@ -515,6 +563,12 @@
|
|||
#define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_1 // PE.01
|
||||
#define SWITCHES_GPIO_REG_B_H GPIOE
|
||||
#define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_2 // PE.02
|
||||
#elif defined(RADIO_T20)
|
||||
#define STORAGE_SWITCH_B
|
||||
#define HARDWARE_SWITCH_B
|
||||
#define SWITCHES_B_INVERTED
|
||||
#define SWITCHES_GPIO_REG_B GPIOE
|
||||
#define SWITCHES_GPIO_PIN_B LL_GPIO_PIN_2 // PE.02
|
||||
#elif (RADIO_LR3PRO)
|
||||
#define STORAGE_SWITCH_B
|
||||
#define HARDWARE_SWITCH_B
|
||||
|
@ -606,6 +660,13 @@
|
|||
#define HARDWARE_SWITCH_C
|
||||
#define SWITCHES_GPIO_REG_C GPIOE
|
||||
#define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_14 // PE.14
|
||||
#elif defined(RADIO_T20)
|
||||
#define STORAGE_SWITCH_C
|
||||
#define HARDWARE_SWITCH_C
|
||||
#define SWITCHES_GPIO_REG_C_L GPIOD
|
||||
#define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_2 // PD.02
|
||||
#define SWITCHES_GPIO_REG_C_H GPIOD
|
||||
#define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_1 // PD.01
|
||||
#elif defined(PCBX7)
|
||||
#define STORAGE_SWITCH_C
|
||||
#define HARDWARE_SWITCH_C
|
||||
|
@ -668,6 +729,13 @@
|
|||
#define HARDWARE_SWITCH_D
|
||||
#define SWITCHES_GPIO_REG_D GPIOD
|
||||
#define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_14 // PD.14
|
||||
#elif defined(RADIO_T20)
|
||||
#define STORAGE_SWITCH_D
|
||||
#define HARDWARE_SWITCH_D
|
||||
#define SWITCHES_GPIO_REG_D_L GPIOE
|
||||
#define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_0 // PE.00
|
||||
#define SWITCHES_GPIO_REG_D_H GPIOE
|
||||
#define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_1 // PE.01
|
||||
#elif defined(PCBX7) && !defined(RADIO_COMMANDO8)
|
||||
#define STORAGE_SWITCH_D
|
||||
#define HARDWARE_SWITCH_D
|
||||
|
@ -750,6 +818,11 @@
|
|||
#define HARDWARE_SWITCH_E
|
||||
#define SWITCHES_GPIO_REG_E GPIOG
|
||||
#define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_10 // PG.10
|
||||
#elif defined(RADIO_T20)
|
||||
#define STORAGE_SWITCH_E
|
||||
#define HARDWARE_SWITCH_E
|
||||
#define SWITCHES_GPIO_REG_E GPIOD
|
||||
#define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_3 // PD.03
|
||||
#elif defined(PCBX7)
|
||||
// no SWE
|
||||
#else
|
||||
|
@ -810,7 +883,12 @@
|
|||
#define HARDWARE_SWITCH_F
|
||||
#define SWITCHES_GPIO_REG_F GPIOG
|
||||
#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_9 // PG.09
|
||||
#elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_COMMANDO8) || defined(RADIO_LR3PRO)
|
||||
#elif defined(RADIO_T20)
|
||||
#define STORAGE_SWITCH_F
|
||||
#define HARDWARE_SWITCH_F
|
||||
#define SWITCHES_GPIO_REG_F GPIOB
|
||||
#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_5 // PB.05
|
||||
#elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_TPROV2) || defined(RADIO_COMMANDO8) || defined(RADIO_LR3PRO)
|
||||
// no SWF
|
||||
#define STORAGE_SWITCH_F
|
||||
#elif defined(RADIO_T12)
|
||||
|
@ -858,6 +936,12 @@
|
|||
#define HARDWARE_SWITCH_G
|
||||
#define SWITCHES_GPIO_REG_G GPIOG
|
||||
#define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_7 // PG.07
|
||||
#elif defined(RADIO_T20)
|
||||
//TRIM left low
|
||||
#define STORAGE_SWITCH_G
|
||||
#define HARDWARE_SWITCH_G
|
||||
#define SWITCHES_GPIO_REG_G GPIOD
|
||||
#define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_15 // PD.15
|
||||
#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_T8) || defined(RADIO_COMMANDO8)
|
||||
// no SWG
|
||||
#else
|
||||
|
@ -899,7 +983,13 @@
|
|||
#define HARDWARE_SWITCH_H
|
||||
#define SWITCHES_GPIO_REG_H GPIOG
|
||||
#define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_6 // PG.06
|
||||
#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO)
|
||||
#elif defined(RADIO_T20)
|
||||
//TRIM right low
|
||||
#define STORAGE_SWITCH_H
|
||||
#define HARDWARE_SWITCH_H
|
||||
#define SWITCHES_GPIO_REG_H GPIOF
|
||||
#define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_0 // PF.00
|
||||
#elif defined(RADIO_TLITE) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO)
|
||||
// no SWH
|
||||
#define STORAGE_SWITCH_H
|
||||
#elif defined(PCBX7)
|
||||
|
@ -1014,6 +1104,17 @@
|
|||
#define HARDWARE_SWITCH_L
|
||||
#define SWITCHES_GPIO_REG_L GPIOG
|
||||
#define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_2 // PG.02
|
||||
#elif defined(RADIO_T20)
|
||||
//TRIM left up
|
||||
#define STORAGE_SWITCH_I
|
||||
#define HARDWARE_SWITCH_I
|
||||
#define SWITCHES_GPIO_REG_I GPIOG
|
||||
#define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_11 // PG.11
|
||||
//TRIM right up
|
||||
#define STORAGE_SWITCH_J
|
||||
#define HARDWARE_SWITCH_J
|
||||
#define SWITCHES_GPIO_REG_J GPIOG
|
||||
#define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_14 // PG.14
|
||||
#elif defined(PCBX7)
|
||||
#define STORAGE_SWITCH_I
|
||||
#define HARDWARE_SWITCH_I
|
||||
|
@ -1025,6 +1126,45 @@
|
|||
#define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_10 // PD.10
|
||||
#endif
|
||||
|
||||
#if defined(RADIO_T20)
|
||||
//SW1
|
||||
#define FUNCTION_SWITCH_1 SK
|
||||
#define STORAGE_SWITCH_K
|
||||
#define HARDWARE_SWITCH_K
|
||||
#define SWITCHES_GPIO_REG_K GPIOE
|
||||
#define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_10 // PE.10
|
||||
//SW2
|
||||
#define FUNCTION_SWITCH_2 SL
|
||||
#define STORAGE_SWITCH_L
|
||||
#define HARDWARE_SWITCH_L
|
||||
#define SWITCHES_GPIO_REG_L GPIOE
|
||||
#define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_8 // PE.08
|
||||
//SW3
|
||||
#define FUNCTION_SWITCH_3 SM
|
||||
#define STORAGE_SWITCH_M
|
||||
#define HARDWARE_SWITCH_M
|
||||
#define SWITCHES_GPIO_REG_M GPIOE
|
||||
#define SWITCHES_GPIO_PIN_M LL_GPIO_PIN_12 // PE.12
|
||||
//SW4
|
||||
#define FUNCTION_SWITCH_4 SN
|
||||
#define STORAGE_SWITCH_N
|
||||
#define HARDWARE_SWITCH_N
|
||||
#define SWITCHES_GPIO_REG_N GPIOE
|
||||
#define SWITCHES_GPIO_PIN_N LL_GPIO_PIN_13 // PE.13
|
||||
//SW5
|
||||
#define FUNCTION_SWITCH_5 SO
|
||||
#define STORAGE_SWITCH_O
|
||||
#define HARDWARE_SWITCH_O
|
||||
#define SWITCHES_GPIO_REG_O GPIOE
|
||||
#define SWITCHES_GPIO_PIN_O LL_GPIO_PIN_14 // PE.14
|
||||
//SW6
|
||||
#define FUNCTION_SWITCH_6 SP
|
||||
#define STORAGE_SWITCH_P
|
||||
#define HARDWARE_SWITCH_P
|
||||
#define SWITCHES_GPIO_REG_P GPIOE
|
||||
#define SWITCHES_GPIO_PIN_P LL_GPIO_PIN_15 // PE.15
|
||||
#endif
|
||||
|
||||
#if defined(PCBX9E)
|
||||
#define STORAGE_SWITCH_I
|
||||
#define HARDWARE_SWITCH_I
|
||||
|
@ -1137,6 +1277,15 @@
|
|||
#define KEYS_GPIOD_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15)
|
||||
#define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)
|
||||
#define KEYS_GPIOG_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7)
|
||||
#elif defined(RADIO_T20)
|
||||
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_GPIOG)
|
||||
#define KEYS_GPIOA_PINS ()
|
||||
#define KEYS_GPIOB_PINS (SWITCHES_GPIO_PIN_F | TRIMS_GPIO_PIN_T7L | TRIMS_GPIO_PIN_T8U)
|
||||
#define KEYS_GPIOC_PINS (SWITCHES_GPIO_PIN_C)
|
||||
#define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_PAGE | KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | TRIMS_GPIO_PIN_LHL | TRIMS_GPIO_PIN_LVU | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_A_H | SWITCHES_GPIO_PIN_G | TRIMS_GPIO_PIN_RSD)
|
||||
#define KEYS_GPIOE_PINS (KEYS_GPIO_PIN_ENTER | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RVU | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_D | SWITCHES_GPIO_PIN_E | SWITCHES_GPIO_PIN_K | SWITCHES_GPIO_PIN_L | SWITCHES_GPIO_PIN_M | SWITCHES_GPIO_PIN_N | SWITCHES_GPIO_PIN_O | SWITCHES_GPIO_PIN_P)
|
||||
#define KEYS_GPIOF_PINS (TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RHR | SWITCHES_GPIO_PIN_H)
|
||||
#define KEYS_GPIOG_PINS (TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_LVD | SWITCHES_GPIO_PIN_I | SWITCHES_GPIO_PIN_J | TRIMS_GPIO_PIN_LSD | TRIMS_GPIO_PIN_LSU | TRIMS_GPIO_PIN_RSU | TRIMS_GPIO_PIN_T7R | TRIMS_GPIO_PIN_T8D)
|
||||
#elif defined(RADIO_FAMILY_JUMPER_T12)
|
||||
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
|
||||
#if !defined(RADIO_TLITE)
|
||||
|
@ -1223,12 +1372,14 @@
|
|||
#endif
|
||||
|
||||
// ADC
|
||||
#define ADC_MAIN ADC1
|
||||
#define ADC_DMA DMA2
|
||||
#define ADC_DMA_CHANNEL LL_DMA_CHANNEL_0
|
||||
#define ADC_DMA_STREAM LL_DMA_STREAM_4
|
||||
#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn
|
||||
#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler
|
||||
#if !defined(RADIO_T20)
|
||||
#define ADC_MAIN ADC1
|
||||
#define ADC_DMA DMA2
|
||||
#define ADC_DMA_CHANNEL LL_DMA_CHANNEL_0
|
||||
#define ADC_DMA_STREAM LL_DMA_STREAM_4
|
||||
#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn
|
||||
#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler
|
||||
#endif
|
||||
|
||||
#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES
|
||||
#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT
|
||||
|
@ -1438,6 +1589,45 @@
|
|||
#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_8
|
||||
#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10
|
||||
#define ADC_VREF_PREC2 330
|
||||
#elif defined(RADIO_T20)
|
||||
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_DMA2)
|
||||
#define ADC_RCC_APB1Periph 0
|
||||
#define ADC_RCC_APB2Periph 0
|
||||
#define ADC_MAIN ADC3
|
||||
#define ADC_DMA DMA2
|
||||
#define ADC_DMA_CHANNEL LL_DMA_CHANNEL_2
|
||||
#define ADC_DMA_STREAM LL_DMA_STREAM_0
|
||||
#define ADC_DMA_STREAM_IRQ DMA2_Stream0_IRQn
|
||||
#define ADC_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler
|
||||
#define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_1 // PA.01
|
||||
#define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_0 // PA.00
|
||||
#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_2 // PA.02
|
||||
#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03
|
||||
#define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_1 // ADC123_IN1
|
||||
#define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_0 // ADC123_IN0
|
||||
#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_2 // ADC123_IN2
|
||||
#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_3 // ADC123_IN3
|
||||
#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_1 // PC.01
|
||||
#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_0 // PC.00
|
||||
#define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_3 // PC.03
|
||||
#define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_2 // PC.02
|
||||
#define ADC_GPIO_PIN_SLIDER3 LL_GPIO_PIN_5 // PF.05
|
||||
#define ADC_GPIO_PIN_SLIDER4 LL_GPIO_PIN_3 // PF.03
|
||||
#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_4 // PF.04
|
||||
#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_11 // ADC123_IN11
|
||||
#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_10 // ADC123_IN10
|
||||
#define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_13 // ADC123_IN13
|
||||
#define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_12 // ADC123_IN12
|
||||
#define ADC_CHANNEL_SLIDER3 LL_ADC_CHANNEL_15 // ADC3_IN15
|
||||
#define ADC_CHANNEL_SLIDER4 LL_ADC_CHANNEL_9 // ADC3_IN9
|
||||
#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_14 // ADC3_IN14
|
||||
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV)
|
||||
#define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2)
|
||||
#define ADC_GPIOF_PINS (ADC_GPIO_PIN_SLIDER3 | ADC_GPIO_PIN_SLIDER4 | ADC_GPIO_PIN_BATT)
|
||||
#define ADC_EXT ADC1
|
||||
#define ADC_EXT_CHANNELS { ADC_CHANNEL_RTC_BATT }
|
||||
#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES
|
||||
#define ADC_VREF_PREC2 330
|
||||
#elif defined(PCBX7)
|
||||
#define HARDWARE_POT1
|
||||
#define HARDWARE_POT2
|
||||
|
@ -1541,6 +1731,8 @@
|
|||
#define ADC_DIRECTION {-1, 1, 1, -1, -1, 1, 1, 1}
|
||||
#elif defined(RADIO_TPRO) || defined(RADIO_TPROV2)
|
||||
#define ADC_DIRECTION {1,-1,1,-1, 1,1, 1, 1}
|
||||
#elif defined(RADIO_T20)
|
||||
#define ADC_DIRECTION {1,-1,1,-1, -1,1,-1,-1,-1,-1}
|
||||
#elif defined(PCBX7)
|
||||
#define ADC_DIRECTION {-1,1,-1,1, 1,1, 1, 1}
|
||||
#elif defined(PCBX9LITE)
|
||||
|
@ -1550,7 +1742,7 @@
|
|||
#endif
|
||||
|
||||
// PWR and LED driver
|
||||
#define PWR_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
|
||||
#define PWR_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOG)
|
||||
|
||||
#if defined(PCBX9LITE)
|
||||
#define PWR_SWITCH_GPIO GPIOA
|
||||
|
@ -1567,6 +1759,11 @@
|
|||
#define PWR_SWITCH_GPIO_PIN GPIO_Pin_11 // PD.11
|
||||
#define PWR_ON_GPIO GPIOD
|
||||
#define PWR_ON_GPIO_PIN GPIO_Pin_10 // PD.10
|
||||
#elif defined(RADIO_T20)
|
||||
#define PWR_SWITCH_GPIO GPIOG
|
||||
#define PWR_SWITCH_GPIO_PIN GPIO_Pin_5 // PG.05
|
||||
#define PWR_ON_GPIO GPIOG
|
||||
#define PWR_ON_GPIO_PIN GPIO_Pin_6 // PG.06
|
||||
#else
|
||||
#define PWR_SWITCH_GPIO GPIOD
|
||||
#define PWR_SWITCH_GPIO_PIN GPIO_Pin_1 // PD.01
|
||||
|
@ -1646,6 +1843,16 @@
|
|||
#define LED_RED_GPIO_PIN GPIO_Pin_5 // PC.05
|
||||
#define LED_BLUE_GPIO GPIOC
|
||||
#define LED_BLUE_GPIO_PIN GPIO_Pin_4 // PC.04
|
||||
#elif defined(RADIO_T20)
|
||||
#define STATUS_LEDS
|
||||
#define GPIO_LED_GPIO_ON GPIO_SetBits
|
||||
#define GPIO_LED_GPIO_OFF GPIO_ResetBits
|
||||
#define LED_GREEN_GPIO GPIOG
|
||||
#define LED_GREEN_GPIO_PIN GPIO_Pin_1 // PG.01
|
||||
#define LED_RED_GPIO GPIOC
|
||||
#define LED_RED_GPIO_PIN GPIO_Pin_5 // PC.05
|
||||
#define LED_BLUE_GPIO GPIOC
|
||||
#define LED_BLUE_GPIO_PIN GPIO_Pin_4 // PC.04
|
||||
#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER)
|
||||
#define STATUS_LEDS
|
||||
#define GPIO_LED_GPIO_ON GPIO_SetBits
|
||||
|
@ -1687,6 +1894,18 @@
|
|||
#endif
|
||||
|
||||
#if defined(FUNCTION_SWITCHES)
|
||||
#if defined(RADIO_T20)
|
||||
#define FS_RCC_AHB1Periph RCC_AHB1Periph_GPIOF
|
||||
#define GPIO_FSLED_GPIO_ON GPIO_SetBits
|
||||
#define GPIO_FSLED_GPIO_OFF GPIO_ResetBits
|
||||
#define FSLED_GPIO GPIOF
|
||||
#define FSLED_GPIO_PIN_1 GPIO_Pin_10
|
||||
#define FSLED_GPIO_PIN_2 GPIO_Pin_9
|
||||
#define FSLED_GPIO_PIN_3 GPIO_Pin_8
|
||||
#define FSLED_GPIO_PIN_4 GPIO_Pin_7
|
||||
#define FSLED_GPIO_PIN_5 GPIO_Pin_6
|
||||
#define FSLED_GPIO_PIN_6 GPIO_Pin_13
|
||||
#else
|
||||
#define FS_RCC_AHB1Periph RCC_AHB1Periph_GPIOF
|
||||
#define GPIO_FSLED_GPIO_ON GPIO_SetBits
|
||||
#define GPIO_FSLED_GPIO_OFF GPIO_ResetBits
|
||||
|
@ -1698,6 +1917,7 @@
|
|||
#define FSLED_GPIO_PIN_5 GPIO_Pin_1
|
||||
#define FSLED_GPIO_PIN_6 GPIO_Pin_0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Internal Module
|
||||
#if defined(PCBXLITE)
|
||||
|
@ -1816,7 +2036,7 @@
|
|||
#define INTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream5_IRQn
|
||||
#define INTMODULE_TIMER_DMA_IRQHandler DMA2_Stream5_IRQHandler
|
||||
#define INTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
|
||||
#elif (defined(RADIO_FAMILY_JUMPER_T12) && defined(HARDWARE_INTERNAL_MODULE)) || defined(RADIO_TX12) || defined(RADIO_T8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2)
|
||||
#elif (defined(RADIO_FAMILY_JUMPER_T12) && defined(HARDWARE_INTERNAL_MODULE)) || defined(RADIO_TX12) || defined(RADIO_T8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_T20)
|
||||
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_DMA1)
|
||||
#define INTMODULE_PWR_GPIO GPIOC
|
||||
#define INTMODULE_PWR_GPIO_PIN GPIO_Pin_6 // PC.06
|
||||
|
@ -1844,6 +2064,11 @@
|
|||
#define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_11 // PF.11
|
||||
#define INTMODULE_BOOTCMD_DEFAULT 0 // RESET
|
||||
#define INIT_INTMODULE_BOOTCMD_PIN() GPIO_ResetBits(INTMODULE_BOOTCMD_GPIO, INTMODULE_BOOTCMD_GPIO_PIN);
|
||||
#elif defined(RADIO_T20)
|
||||
#define INTMODULE_BOOTCMD_GPIO GPIOE
|
||||
#define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_4 // PE.04
|
||||
#define INTMODULE_BOOTCMD_DEFAULT 0 // RESET
|
||||
#define INIT_INTMODULE_BOOTCMD_PIN() GPIO_ResetBits(INTMODULE_BOOTCMD_GPIO, INTMODULE_BOOTCMD_GPIO_PIN);
|
||||
#elif defined(RADIO_LR3PRO)
|
||||
#define INTMODULE_BOOTCMD_GPIO GPIOB
|
||||
#define INTMODULE_BOOTCMD_GPIO_PIN GPIO_Pin_5 // PB.05
|
||||
|
@ -1945,14 +2170,20 @@
|
|||
#if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TLITE)
|
||||
#define HARDWARE_EXTERNAL_MODULE_SIZE_SML
|
||||
#endif
|
||||
#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
|
||||
#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
|
||||
#if defined(RADIO_COMMANDO8)
|
||||
#define EXTMODULE_RF_SWITCH_GPIO GPIOE //Antenna switching port
|
||||
#define EXTMODULE_RF_SWITCH_GPIO_PIN GPIO_Pin_7 //Antenna switching pin //PE.07
|
||||
#define EXTMODULE_PWR_GPIO GPIOE //External tuner power port //PE.02
|
||||
#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_2 //External tuner power pin
|
||||
#define EXTERNAL_MODULE_PWR_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN|EXTMODULE_RF_SWITCH_GPIO_PIN)
|
||||
#define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN|EXTMODULE_RF_SWITCH_GPIO_PIN)
|
||||
#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_2 //External tuner power pin
|
||||
#define EXTERNAL_MODULE_PWR_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN|EXTMODULE_RF_SWITCH_GPIO_PIN)
|
||||
#define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN|EXTMODULE_RF_SWITCH_GPIO_PIN)
|
||||
#elif defined(RADIO_T20)
|
||||
#define EXTMODULE_PWR_GPIO GPIOB
|
||||
#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_1 // PB.01
|
||||
#define EXTERNAL_MODULE_PWR_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN)
|
||||
#define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN)
|
||||
#define HARDWARE_EXTERNAL_MODULE_SIZE_SML
|
||||
#else
|
||||
#define EXTMODULE_PWR_GPIO GPIOD
|
||||
#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // PD.08
|
||||
|
@ -2008,8 +2239,13 @@
|
|||
#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH3
|
||||
#define TRAINER_OUT_GPIO_PIN LL_GPIO_PIN_9 // PC.09
|
||||
#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH4
|
||||
#if defined(RADIO_T20)
|
||||
#define TRAINER_DETECT_GPIO GPIOE
|
||||
#define TRAINER_DETECT_GPIO_PIN LL_GPIO_PIN_8 // PE.03
|
||||
#else
|
||||
#define TRAINER_DETECT_GPIO GPIOA
|
||||
#define TRAINER_DETECT_GPIO_PIN LL_GPIO_PIN_8 // PA.08
|
||||
#endif
|
||||
#if !defined(RADIO_X9DP2019) && !defined(RADIO_X7ACCESS)
|
||||
#define TRAINER_DETECT_INVERTED
|
||||
#endif
|
||||
|
@ -2124,7 +2360,7 @@
|
|||
#define SPORT_UPDATE_PWR_GPIO_PIN GPIO_Pin_8 // PD.08
|
||||
#define GPIO_SPORT_UPDATE_PWR_GPIO_ON GPIO_SetBits
|
||||
#define GPIO_SPORT_UPDATE_PWR_GPIO_OFF GPIO_ResetBits
|
||||
#elif defined(PCBX7ACCESS)
|
||||
#elif defined(PCBX7ACCESS)
|
||||
#define SPORT_MAX_BAUDRATE 400000
|
||||
#define SPORT_UPDATE_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
|
||||
#define SPORT_UPDATE_PWR_GPIO GPIOB
|
||||
|
@ -2321,7 +2557,7 @@
|
|||
#define BACKLIGHT_CCMR1 TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 // Channel 1, PWM
|
||||
#define BACKLIGHT_CCER TIM_CCER_CC1E
|
||||
#define BACKLIGHT_COUNTER_REGISTER BACKLIGHT_TIMER->CCR1
|
||||
#elif defined(RADIO_T8) || defined(RADIO_TPROV2)
|
||||
#elif defined(RADIO_T8) || defined(RADIO_TPROV2) || defined(RADIO_T20)
|
||||
#define BACKLIGHT_RCC_AHB1Periph 0
|
||||
#define BACKLIGHT_RCC_APB1Periph 0
|
||||
#define BACKLIGHT_RCC_APB2Periph 0
|
||||
|
@ -2337,7 +2573,7 @@
|
|||
#define BACKLIGHT_GPIO_AF GPIO_AF_TIM4
|
||||
#define BACKLIGHT_CCMR1 TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 // Channel2, PWM
|
||||
#define BACKLIGHT_CCER TIM_CCER_CC2E
|
||||
#define BACKLIGHT_COUNTER_REGISTER BACKLIGHT_TIMER->CCR2
|
||||
#define BACKLIGHT_COUNTER_REGISTER BACKLIGHT_TIMER->CCR2
|
||||
#elif defined(PCBX7)
|
||||
#define BACKLIGHT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD
|
||||
#define BACKLIGHT_RCC_APB1Periph RCC_APB1Periph_TIM4
|
||||
|
@ -2365,10 +2601,10 @@
|
|||
#define KEYS_BACKLIGHT_RCC_AHB1Periph 0
|
||||
|
||||
// LCD driver
|
||||
#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2)
|
||||
#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_T20)
|
||||
#define LCD_VERTICAL_INVERT
|
||||
#endif
|
||||
#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2)
|
||||
#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_T20)
|
||||
#define LCD_HORIZONTAL_INVERT
|
||||
#define OLED_SCREEN
|
||||
#endif
|
||||
|
@ -2425,8 +2661,13 @@
|
|||
#define LCD_A0_GPIO_PIN GPIO_Pin_11 // PC.11
|
||||
#define LCD_NCS_GPIO GPIOA
|
||||
#define LCD_NCS_GPIO_PIN GPIO_Pin_15 // PA.15
|
||||
#if defined(RADIO_T20)
|
||||
#define LCD_RST_GPIO GPIOA
|
||||
#define LCD_RST_GPIO_PIN GPIO_Pin_14 // PA.14
|
||||
#else
|
||||
#define LCD_RST_GPIO GPIOD
|
||||
#define LCD_RST_GPIO_PIN GPIO_Pin_12 // PD.12
|
||||
#endif
|
||||
#define LCD_DMA DMA1
|
||||
#define LCD_DMA_Stream DMA1_Stream7
|
||||
#define LCD_DMA_Stream_IRQn DMA1_Stream7_IRQn
|
||||
|
@ -2514,13 +2755,17 @@
|
|||
// SD - SPI2
|
||||
#define SD_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1)
|
||||
#define SD_RCC_APB1Periph RCC_APB1Periph_SPI2
|
||||
#define SD_PRESENT_GPIO GPIOD
|
||||
#if defined(PCBXLITE) || defined(PCBX9LITE)
|
||||
#define SD_PRESENT_GPIO_PIN GPIO_Pin_10 // PD.10
|
||||
#elif defined(RADIO_COMMANDO8)
|
||||
#define SD_PRESENT_GPIO_PIN GPIO_Pin_8 // PD.08
|
||||
#if defined(RADIO_T20)
|
||||
// Using chip, so no detect
|
||||
#else
|
||||
#define SD_PRESENT_GPIO_PIN GPIO_Pin_9 // PD.09
|
||||
#define SD_PRESENT_GPIO GPIOD
|
||||
#if defined(PCBXLITE) || defined(PCBX9LITE)
|
||||
#define SD_PRESENT_GPIO_PIN GPIO_Pin_10 // PD.10
|
||||
#elif defined(RADIO_COMMANDO8)
|
||||
#define SD_PRESENT_GPIO_PIN GPIO_Pin_8 // PD.08
|
||||
#else
|
||||
#define SD_PRESENT_GPIO_PIN GPIO_Pin_9 // PD.09
|
||||
#endif
|
||||
#endif
|
||||
#define SD_GPIO GPIOB
|
||||
#define SD_GPIO_PIN_CS GPIO_Pin_12 // PB.12
|
||||
|
@ -2564,22 +2809,28 @@
|
|||
#define AUDIO_SPEAKER_ENABLE_GPIO_PIN GPIO_Pin_14 // PD.14
|
||||
#define HEADPHONE_TRAINER_SWITCH_GPIO GPIOD
|
||||
#define HEADPHONE_TRAINER_SWITCH_GPIO_PIN GPIO_Pin_9 // PD.09
|
||||
#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_ZORRO) || defined(RADIO_BOXER) || defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO)
|
||||
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
|
||||
#define AUDIO_MUTE_GPIO GPIOE
|
||||
#define AUDIO_MUTE_GPIO_PIN GPIO_Pin_12 // PE.12
|
||||
#elif defined(RADIO_T20)
|
||||
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
|
||||
#define AUDIO_MUTE_GPIO GPIOG
|
||||
#define AUDIO_MUTE_GPIO_PIN GPIO_Pin_4 // PG.04
|
||||
#define AUDIO_MUTE_DELAY 500 // ms
|
||||
#if defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO)
|
||||
#define AUDIO_UNMUTE_DELAY 250 // ms
|
||||
#else
|
||||
#define AUDIO_UNMUTE_DELAY 150 // ms
|
||||
#endif
|
||||
#elif defined(RADIO_COMMANDO8)
|
||||
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
|
||||
#define AUDIO_MUTE_GPIO GPIOB
|
||||
#define AUDIO_MUTE_GPIO_PIN GPIO_Pin_1 // PB.01
|
||||
#define AUDIO_MUTE_DELAY 500 // ms
|
||||
#define INVERTED_MUTE_PIN
|
||||
#elif defined(MANUFACTURER_RADIOMASTER) || defined(MANUFACTURER_JUMPER) || defined(RADIO_LR3PRO)
|
||||
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
|
||||
#define AUDIO_MUTE_GPIO GPIOE
|
||||
#define AUDIO_MUTE_GPIO_PIN GPIO_Pin_12 // PE.12
|
||||
#define AUDIO_MUTE_DELAY 500 // ms
|
||||
#if defined(MANUFACTURER_JUMPER) || defined(RADIO_LR3PRO)
|
||||
#define AUDIO_UNMUTE_DELAY 250 // ms
|
||||
#else
|
||||
#define AUDIO_UNMUTE_DELAY 150 // ms
|
||||
#endif
|
||||
#else
|
||||
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
|
||||
#endif
|
||||
|
|
|
@ -113,7 +113,7 @@ const uint32_t CROSSFIRE_BAUDRATES[] = {
|
|||
5250000,
|
||||
};
|
||||
|
||||
#if defined(RADIO_TPRO) || defined(RADIO_TPROV2)
|
||||
#if defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_T20)
|
||||
#define CROSSFIRE_MAX_INTERNAL_BAUDRATE DIM(CROSSFIRE_BAUDRATES) - 3
|
||||
#else
|
||||
#define CROSSFIRE_MAX_INTERNAL_BAUDRATE DIM(CROSSFIRE_BAUDRATES) - 1
|
||||
|
|
|
@ -164,6 +164,7 @@ const char STR_PPMFRAME[] = TR_PPMFRAME;
|
|||
const char STR_REFRESHRATE[] = TR_REFRESHRATE;
|
||||
const char STR_MS[] = TR_MS;
|
||||
const char STR_SWITCH[] = TR_SWITCH;
|
||||
const char STR_FUNCTION_SWITCHES[] = TR_FUNCTION_SWITCHES;
|
||||
const char STR_ADJUST_GVAR[] = TR_ADJUST_GVAR;
|
||||
const char STR_PLAY_TRACK[] = TR_PLAY_TRACK;
|
||||
const char STR_PLAY_VALUE[] = TR_PLAY_VALUE;
|
||||
|
|
|
@ -288,6 +288,7 @@ extern const char STR_PPMFRAME[];
|
|||
extern const char STR_REFRESHRATE[];
|
||||
extern const char STR_MS[];
|
||||
extern const char STR_SWITCH[];
|
||||
extern const char STR_FUNCTION_SWITCHES[];
|
||||
extern const char STR_ADJUST_GVAR[];
|
||||
extern const char STR_PLAY_TRACK[];
|
||||
extern const char STR_PLAY_VALUE[];
|
||||
|
|
|
@ -260,6 +260,7 @@
|
|||
#define TR_WARN_5VOLTS "注意输出电平为5V"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "开关"
|
||||
#define TR_FUNCTION_SWITCHES "可自定义开关"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "微调"
|
||||
#define TR_FADEIN "渐入"
|
||||
|
@ -446,7 +447,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "已校准的模拟值"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "原始模拟值 (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "校准"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "可自定义开关"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "将当前微调量保存至中点"
|
||||
#else
|
||||
|
@ -831,7 +832,7 @@
|
|||
#define TR_DEBUG "调试"
|
||||
#define TR_KEYS_BTN BUTTON("按键")
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("模拟", "模拟量"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("自定义开关", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "未找到触摸硬件"
|
||||
#define TR_TOUCH_EXIT "点击屏幕退出"
|
||||
#define TR_SET BUTTON("设置")
|
||||
|
|
|
@ -275,6 +275,7 @@
|
|||
#define TR_WARN_5VOLTS "Varování: výstupní úroveň je 5 voltů"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "Spínač"
|
||||
#define TR_FUNCTION_SWITCHES "Nastavitelné přepínače"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "Trimy"
|
||||
#define TR_FADEIN "Přechod Zap"
|
||||
|
@ -461,8 +462,8 @@
|
|||
#define TR_MENU_RADIO_ANALOGS "ANALOGY"
|
||||
#define TR_MENU_RADIO_ANALOGS_CALIB "KALIBROVAT ANALOGY"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGY (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "KALIBRACE"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENUCALIBRATION "KALIBRACE"
|
||||
#define TR_MENU_FSWITCH "NASTAVITELNÉ PŘEPÍNAČE"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trimy => Subtrimy"
|
||||
#else
|
||||
|
@ -841,7 +842,7 @@
|
|||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Přepínače"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogy"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Vlastní Sw", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "Dotyková obrazovka nenalezena"
|
||||
#define TR_TOUCH_EXIT "Dotkněte se obrazovky pro ukončení"
|
||||
#define TR_SET BUTTON("Nast")
|
||||
|
|
|
@ -273,6 +273,7 @@
|
|||
#define TR_WARN_5VOLTS "Advarsel: udgang niveau er 5 volts"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "Kontakt"
|
||||
#define TR_FUNCTION_SWITCHES "Kontakter der kan tilpasses"
|
||||
#define TR_SF_SWITCH "Udløser"
|
||||
#define TR_TRIMS "Trim"
|
||||
#define TR_FADEIN "Tone ind"
|
||||
|
@ -459,8 +460,8 @@
|
|||
#define TR_MENU_RADIO_ANALOGS TR("ANALOGS", "ANALOGS TEST")
|
||||
#define TR_MENU_RADIO_ANALOGS_CALIB "KALIBRERET ANALOGE"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RÅ ANALOGE (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "KALIBRIERING"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENUCALIBRATION "KALIBRIERING"
|
||||
#define TR_MENU_FSWITCH "KONTAKTER DER KAN TILPASSES"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trim => Subtrim"
|
||||
#else
|
||||
|
@ -845,7 +846,7 @@
|
|||
#define TR_DEBUG "Fejlfind"
|
||||
#define TR_KEYS_BTN BUTTON("Taster")
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analo", "Analoge"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Tilpasset sw", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "Tryk skærm ikke fundet"
|
||||
#define TR_TOUCH_EXIT "Tryk på skærm for at forlade"
|
||||
#define TR_SET BUTTON("Set")
|
||||
|
|
|
@ -270,6 +270,7 @@
|
|||
#define TR_WARN_5VOLTS "Warnung: Ausgangspegel ist 5 Volt"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH TR("Schalt.", "Schalter")
|
||||
#define TR_FUNCTION_SWITCHES "Anpassbare Schalter"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "Trimmer"
|
||||
#define TR_FADEIN "Langs. Ein"
|
||||
|
@ -456,7 +457,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "CALIBRATED ANALOGS"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGS (5 Hz)"
|
||||
#define TR_MENUCALIBRATION TR("KALIB. ANALOG", "KALIBRIERUNG-Analog")
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "ANPASSBARE SCHALTER"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trims => Subtrims"
|
||||
#else
|
||||
|
@ -833,7 +834,7 @@
|
|||
#define TR_DEBUG "Testen"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Schalter"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analoge"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("AnpSchalt", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Kalibrieren"
|
||||
|
|
|
@ -271,6 +271,7 @@
|
|||
#define TR_WARN_5VOLTS "Warning: output level is 5 volts"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "Switch"
|
||||
#define TR_FUNCTION_SWITCHES "Customizable Switches"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Fade in"
|
||||
|
@ -456,7 +457,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "CALIBRATED ANALOGS"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGS (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "CALIBRATION"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "CUSTOMIZABLE SWITCHES"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trims => Subtrims"
|
||||
#else
|
||||
|
@ -841,7 +842,7 @@
|
|||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON("Keys")
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Custom sw", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_SET BUTTON("Set")
|
||||
|
|
|
@ -268,6 +268,7 @@
|
|||
#define TR_WARN_5VOLTS "Aviso: nivel de salida 5 voltios"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH TR("Interr.", "Interruptor")
|
||||
#define TR_FUNCTION_SWITCHES "Customizable switches"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Inicio"
|
||||
|
@ -447,7 +448,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "CALIBRATED ANALOGS"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGS (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "CALIBRACIÓN"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "CUSTOMIZABLE SWITCHES"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trims => Offsets"
|
||||
#else
|
||||
|
@ -836,7 +837,7 @@
|
|||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Custom sw", "Customizable switches"))
|
||||
#define TR_TOUCH_NOTFOUND "Hardware táctil no encontrado"
|
||||
#define TR_TOUCH_EXIT "Tocar pantalla para salir"
|
||||
#define TR_CALIBRATION "Calibración"
|
||||
|
|
|
@ -282,6 +282,7 @@
|
|||
#define TR_WARN_5VOLTS "Warning: output level is 5 volts"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "Switch"
|
||||
#define TR_FUNCTION_SWITCHES "Customizable switches"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Fade In"
|
||||
|
@ -462,7 +463,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "CALIBRATED ANALOGS"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGS (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "KALIBROINTI"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "CUSTOMIZABLE SWITCHES"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trims => Subtrims"
|
||||
#else
|
||||
|
@ -850,7 +851,7 @@
|
|||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Custom sw", "Customizable switches"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_SET "[Set]"
|
||||
|
|
|
@ -277,6 +277,7 @@
|
|||
#define TR_WARN_5VOLTS "Attention: niveau de sortie 5 volts"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH TR("Inter", "Interrupteur")
|
||||
#define TR_FUNCTION_SWITCHES "Inters paramétrables"
|
||||
#define TR_SF_SWITCH "Interrupteur"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Fondu ON"
|
||||
|
@ -464,7 +465,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "ANALOG. CALIBRÉS"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGS (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "CALIBRATION"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "INTERS PARAMÉTRABLES"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trims => Subtrims"
|
||||
#else
|
||||
|
@ -843,7 +844,7 @@
|
|||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("Btns","Inters"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Custom sw", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "Écran tactile non trouvé"
|
||||
#define TR_TOUCH_EXIT "Toucher écran pour quitter"
|
||||
#define TR_SET BUTTON("Déf")
|
||||
|
|
|
@ -350,6 +350,7 @@
|
|||
#define TR_WARN_5VOLTS "Warning: output level is 5 volts"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "מתג"
|
||||
#define TR_FUNCTION_SWITCHES "מפסקים בהתאמה אישית"
|
||||
#define TR_SF_SWITCH "הדק"
|
||||
#define TR_TRIMS "קיזוזים"
|
||||
#define TR_FADEIN "Fade in"
|
||||
|
@ -534,7 +535,8 @@
|
|||
#define TR_MENU_RADIO_ANALOGS TR("ANALOGS", "בדיקת אנלוגיות")
|
||||
#define TR_MENU_RADIO_ANALOGS_CALIB "בדיקת אנלוגיות סטיקים ומגע"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGS (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "כיול"
|
||||
#define TR_MENUCALIBRATION "כיול"
|
||||
#define TR_MENU_FSWITCH "מפסקים בהתאמה אישית"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trims => Subtrims"
|
||||
#else
|
||||
|
@ -919,7 +921,7 @@
|
|||
#define TR_DEBUG "איבחון"
|
||||
#define TR_KEYS_BTN BUTTON("בדיקת מתגים")
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Anas", "בדיקת אנלוגיות"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Custom sw", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "!מסך זה אינו מסך מגע"
|
||||
#define TR_TOUCH_EXIT "גע במסך כדי לצאת"
|
||||
#define TR_SET BUTTON("הגדר")
|
||||
|
|
|
@ -269,6 +269,7 @@
|
|||
#define TR_WARN_5VOLTS "Attenzione: il livello d'uscita è 5 Volts"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "Inter."
|
||||
#define TR_FUNCTION_SWITCHES "Interruttori personalizzabili"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Diss.In"
|
||||
|
@ -454,7 +455,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "ANALOGICI CALIBRATI"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "ANALOGICI RAW (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "CALIBRAZIONE"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "INTERRUTTORI PERSONALIZZABILI"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trims => Subtrims"
|
||||
#else
|
||||
|
@ -839,7 +840,7 @@
|
|||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW", "Tasti"))
|
||||
#define TR_ANALOGS_BTN BUTTON("Analogici")
|
||||
#define TR_FS_BTN BUTTON(TR("Fun. Inter.", "Funzione interruttori"))
|
||||
#define TR_FS_BTN BUTTON(TR("Int. pers.", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "Schermo touch non trovato"
|
||||
#define TR_TOUCH_EXIT "Tocca lo schermo per uscire"
|
||||
#define TR_SET BUTTON("Set")
|
||||
|
|
|
@ -266,6 +266,7 @@
|
|||
#define TR_WARN_5VOLTS "警告: 出力レベル 5V"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "スイッチ"
|
||||
#define TR_FUNCTION_SWITCHES "Customizable switches"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "トリム"
|
||||
#define TR_FADEIN "フェードイン"
|
||||
|
@ -451,7 +452,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "アナログ キャリブレーション"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW アナログ (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "キャリブレーション"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "CUSTOMIZABLE SWITCHES"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "トリム => サブトリム"
|
||||
#else
|
||||
|
@ -836,7 +837,7 @@
|
|||
#define TR_DEBUG "デバッグ"
|
||||
#define TR_KEYS_BTN BUTTON("キー")
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Anas", "アナログ"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Custom sw", "Customizable switches"))
|
||||
#define TR_TOUCH_NOTFOUND "タッチパネルは見つかりませんでした"
|
||||
#define TR_TOUCH_EXIT "画面をタップして終了します"
|
||||
#define TR_SET BUTTON("設定")
|
||||
|
|
|
@ -268,6 +268,7 @@
|
|||
#define TR_WARN_5VOLTS "Warning: output level is 5 volts"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH TR("Schak.", "Schakelaar")
|
||||
#define TR_FUNCTION_SWITCHES "Customizable switches"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Fade in"
|
||||
|
@ -457,7 +458,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "CALIBRATED ANALOGS"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGS (5 Hz)"
|
||||
#define TR_MENUCALIBRATION TR("CALIB. ANALOOG", "CALIBRERING Sticks+Pots")
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "CUSTOMIZABLE SWITCHES"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trims => Subtrims"
|
||||
#else
|
||||
|
@ -837,7 +838,7 @@
|
|||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Custom sw", "Customizable switches"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_SET "[Set]"
|
||||
|
|
|
@ -267,6 +267,7 @@
|
|||
#define TR_WARN_5VOLTS "Uwaga: output level is 5 volts"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "Przełą"
|
||||
#define TR_FUNCTION_SWITCHES "Ustawiane przełączniki"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "Trymy"
|
||||
#define TR_FADEIN "Pojawia"
|
||||
|
@ -450,8 +451,8 @@
|
|||
#define TR_MENU_RADIO_ANALOGS TR("WE-ANA","WEJŚCIA ANALOG.")
|
||||
#define TR_MENU_RADIO_ANALOGS_CALIB "CALIBRATED ANALOGS"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGS (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "KALIBRACJA"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENUCALIBRATION "KALIBRACJA"
|
||||
#define TR_MENU_FSWITCH "USTAWIANE PRZEŁĄCZNIKI"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trymery => Subtrimy"
|
||||
#else
|
||||
|
@ -831,7 +832,7 @@
|
|||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogi"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Ust. łącz.", TR_FUNCTION_SWITCHES ))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_SET "[Set]"
|
||||
|
|
|
@ -271,6 +271,7 @@
|
|||
#define TR_WARN_5VOLTS "Warning: output level is 5 volts"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "Chave"
|
||||
#define TR_FUNCTION_SWITCHES "Botão customizável"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Aparecer"
|
||||
|
@ -451,7 +452,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "CALIBRATED ANALOGS"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RAW ANALOGS (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "CALIBRAGEM"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "BOTÃO CUSTOMIZÁVEL"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "Trims => Subtrims"
|
||||
#else
|
||||
|
@ -839,7 +840,7 @@
|
|||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Bt Custom", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_SET "[Set]"
|
||||
|
|
|
@ -284,6 +284,7 @@
|
|||
#define TR_WARN_5VOLTS "VARNING: Spänning ut är 5 volt"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "Brytare"
|
||||
#define TR_FUNCTION_SWITCHES "Anpassningsbara brytare"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "Trimmar"
|
||||
#define TR_FADEIN "Tona in"
|
||||
|
@ -478,7 +479,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "KALIBRERADE ANALOGA"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "RÅA ANALOGA (5Hz)"
|
||||
#define TR_MENUCALIBRATION "KALIBRERING"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "ANPASSNINGSBARA BRYTARE"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "[Spara trimvärden]"
|
||||
#else
|
||||
|
@ -859,7 +860,7 @@
|
|||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("Bryt.","Brytare"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Ana.","Analoga"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("Anp. bryt.", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "Pekskärm hittas ej"
|
||||
#define TR_TOUCH_EXIT "Peka på skärmen för att avsluta"
|
||||
#define TR_SET BUTTON(TR("Def", "Ställ in"))
|
||||
|
|
|
@ -265,6 +265,7 @@
|
|||
#define TR_WARN_5VOLTS "注意輸出電平是5V"
|
||||
#define TR_MS "ms"
|
||||
#define TR_SWITCH "開關"
|
||||
#define TR_FUNCTION_SWITCHES "可自定義開關"
|
||||
#define TR_SF_SWITCH "Trigger"
|
||||
#define TR_TRIMS "微調"
|
||||
#define TR_FADEIN "漸入"
|
||||
|
@ -450,7 +451,7 @@
|
|||
#define TR_MENU_RADIO_ANALOGS_CALIB "已校準的類比值"
|
||||
#define TR_MENU_RADIO_ANALOGS_RAWLOWFPS "原始類比值 (5 Hz)"
|
||||
#define TR_MENUCALIBRATION "校準"
|
||||
#define TR_MENU_FSWITCH "FUNCTION SWITCHES"
|
||||
#define TR_MENU_FSWITCH "可自定義開關"
|
||||
#if defined(COLORLCD)
|
||||
#define TR_TRIMS2OFFSETS "將當前微調量保存至中點"
|
||||
#else
|
||||
|
@ -835,7 +836,7 @@
|
|||
#define TR_DEBUG "調試"
|
||||
#define TR_KEYS_BTN BUTTON("按鍵")
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("類比", "類比"))
|
||||
#define TR_FS_BTN BUTTON(TR("F. Switches", "Function switches"))
|
||||
#define TR_FS_BTN BUTTON(TR("自定義開關", TR_FUNCTION_SWITCHES))
|
||||
#define TR_TOUCH_NOTFOUND "未找到觸摸硬件"
|
||||
#define TR_TOUCH_EXIT "點擊屏幕退出"
|
||||
#define TR_SET BUTTON("設置")
|
||||
|
|
|
@ -21,13 +21,15 @@ TRIMS = [
|
|||
{ "name": "T4", "dec": "RHL", "inc": "RHR", "input": "RH" },
|
||||
{ "name": "T5", "dec": "LSD", "inc": "LSU" },
|
||||
{ "name": "T6", "dec": "RSD", "inc": "RSU" },
|
||||
{ "name": "T7", "dec": "T7L", "inc": "T7R" },
|
||||
{ "name": "T8", "dec": "T8D", "inc": "T8U" },
|
||||
# Surface
|
||||
{ "name": "T1", "dec": "T1L", "inc": "T1R", "input": "ST" },
|
||||
{ "name": "T2", "dec": "T2L", "inc": "T2R", "input": "TH" },
|
||||
{ "name": "T3", "dec": "T3L", "inc": "T3R"},
|
||||
{ "name": "T4", "dec": "T4L", "inc": "T4R"},
|
||||
{ "name": "T5", "dec": "T5L", "inc": "T5R" },
|
||||
{ "name": "T6", "dec": "T6L", "inc": "T6R" },
|
||||
{ "name": "T6", "dec": "T6D", "inc": "T6U" },
|
||||
]
|
||||
|
||||
KEYS = [
|
||||
|
|
|
@ -293,6 +293,65 @@ LEGACY_NAMES = [
|
|||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"targets": {"t20"},
|
||||
"inputs": {
|
||||
"LH": {
|
||||
"yaml": "Rud"
|
||||
},
|
||||
"LV": {
|
||||
"yaml": "Ele"
|
||||
},
|
||||
"RV": {
|
||||
"yaml": "Thr"
|
||||
},
|
||||
"RH": {
|
||||
"yaml": "Ail"
|
||||
},
|
||||
"P1": {
|
||||
"yaml": "POT1",
|
||||
"lua": "s1",
|
||||
"label": "S1",
|
||||
"short_label": "1",
|
||||
"description": "Potentiometer 1"
|
||||
},
|
||||
"P2": {
|
||||
"yaml": "POT2",
|
||||
"lua": "s2",
|
||||
"label": "S2",
|
||||
"short_label": "2",
|
||||
"description": "Potentiometer 2"
|
||||
},
|
||||
"SL1": {
|
||||
"yaml": "SLIDER1",
|
||||
"lua": "s3",
|
||||
"label": "S3",
|
||||
"short_label": "3",
|
||||
"description": "Potentiometer 3"
|
||||
},
|
||||
"SL2": {
|
||||
"yaml": "SLIDER2",
|
||||
"lua": "s4",
|
||||
"label": "S4",
|
||||
"short_label": "4",
|
||||
"description": "Potentiometer 4"
|
||||
},
|
||||
"SL3": {
|
||||
"yaml": "SLIDER3",
|
||||
"lua": "sl",
|
||||
"label": "SL",
|
||||
"short_label": "L",
|
||||
"description": "Right finger slider"
|
||||
},
|
||||
"SL4": {
|
||||
"yaml": "SLIDER4",
|
||||
"lua": "sr",
|
||||
"label": "SR",
|
||||
"short_label": "R",
|
||||
"description": "Right finger slider"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"targets": {"x9lite","x9lites"},
|
||||
"inputs": {
|
||||
|
|
|
@ -13,6 +13,14 @@ POT_CONFIG = {
|
|||
"P1": { "default": "WITH_DETENT" },
|
||||
"P2": { "default": "WITH_DETENT" }
|
||||
},
|
||||
"t20": {
|
||||
"P1": { "default": "WITH_DETENT" },
|
||||
"P2": { "default": "WITH_DETENT" },
|
||||
"SL1": { "default": "SLIDER_WITH_DETENT" },
|
||||
"SL2": { "default": "SLIDER_WITH_DETENT" },
|
||||
"SL3": { "default": "SLIDER_WITH_DETENT" },
|
||||
"SL4": { "default": "SLIDER_WITH_DETENT" },
|
||||
},
|
||||
"t12": {
|
||||
"P1": { "default": "WITHOUT_DETENT" },
|
||||
"P2": { "default": "WITHOUT_DETENT" }
|
||||
|
|
|
@ -112,6 +112,20 @@ SWITCH_CONFIG = {
|
|||
"SF": { "default": "2POS", "display": [ 1, 2 ] },
|
||||
"SH": { "default": "TOGGLE", "display": [ 1, 3 ] },
|
||||
},
|
||||
"t20": {
|
||||
# left side
|
||||
"SA": { "default": "2POS", "display": [ 0, 0 ] },
|
||||
"SC": { "default": "3POS", "display": [ 0, 1 ] },
|
||||
"SE": { "default": "2POS", "display": [ 0, 2 ] },
|
||||
"SG": { "default": "TOGGLE", "display": [ 0, 3 ] },
|
||||
"SI": { "default": "TOGGLE", "display": [ 0, 4 ] },
|
||||
# right side
|
||||
"SB": { "default": "2POS", "display": [ 1, 0 ] },
|
||||
"SD": { "default": "3POS", "display": [ 1, 1 ] },
|
||||
"SF": { "default": "2POS", "display": [ 1, 2 ] },
|
||||
"SH": { "default": "TOGGLE", "display": [ 1, 3 ] },
|
||||
"SJ": { "default": "TOGGLE", "display": [ 1, 4 ] }
|
||||
},
|
||||
"tx12": {
|
||||
# left side
|
||||
"SA": { "default": "TOGGLE", "display": [ 0, 0 ] },
|
||||
|
|
|
@ -70,4 +70,8 @@ boards = {
|
|||
"PCB": "X7",
|
||||
"PCBREV": "COMMANDO8",
|
||||
},
|
||||
"T20": {
|
||||
"PCB": "X7",
|
||||
"PCBREV": "T20",
|
||||
},
|
||||
}
|
||||
|
|
|
@ -68,6 +68,7 @@ declare -a simulator_plugins=(x9lite x9lites
|
|||
t8 t12 tx12 tx12mk2
|
||||
zorro commando8 boxer
|
||||
tlite tpro lr3pro
|
||||
t20
|
||||
x9d x9dp x9dp2019 x9e
|
||||
xlite xlites
|
||||
nv14
|
||||
|
@ -122,6 +123,9 @@ do
|
|||
tpro)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TPRO"
|
||||
;;
|
||||
t20)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
|
||||
;;
|
||||
xlite)
|
||||
BUILD_OPTIONS+="-DPCB=XLITE"
|
||||
;;
|
||||
|
|
|
@ -134,6 +134,9 @@ do
|
|||
tprov2)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TPROV2"
|
||||
;;
|
||||
t20)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
|
||||
;;
|
||||
lr3pro)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=LR3PRO"
|
||||
;;
|
||||
|
|
|
@ -103,6 +103,9 @@ do
|
|||
tlitef4)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TLITEF4"
|
||||
;;
|
||||
t20)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
|
||||
;;
|
||||
xlite)
|
||||
BUILD_OPTIONS+="-DPCB=XLITE"
|
||||
;;
|
||||
|
|
|
@ -6,7 +6,7 @@ set -e
|
|||
|
||||
: "${SRCDIR:=$(dirname "$(pwd)/$0")/..}"
|
||||
|
||||
: ${FLAVOR:="nv14;t12;t16;t18;t8;zorro;commando8;tlite;tpro;tprov2;lr3pro;tx12;tx12mk2;boxer;tx16s;x10;x10-access;x12s;x7;x7-access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites"}
|
||||
: ${FLAVOR:="nv14;t12;t16;t18;t8;zorro;commando8;tlite;tpro;tprov2;t20;lr3pro;tx12;tx12mk2;boxer;tx16s;x10;x10-access;x12s;x7;x7-access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites"}
|
||||
: ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"}
|
||||
|
||||
# wipe build directory clean
|
||||
|
@ -63,6 +63,9 @@ do
|
|||
tprov2)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TPROV2"
|
||||
;;
|
||||
t20)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
|
||||
;;
|
||||
lr3pro)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=LR3PRO"
|
||||
;;
|
||||
|
|
|
@ -8,7 +8,7 @@ if [[ -n ${GCC_ARM} ]] ; then
|
|||
export PATH=${GCC_ARM}:$PATH
|
||||
fi
|
||||
|
||||
: ${FLAVOR:="tx16s;x12s;nv14;x9d;x9dp;x9e;x9lite;xlites;x7;tpro"}
|
||||
: ${FLAVOR:="tx16s;x12s;nv14;x9d;x9dp;x9e;x9lite;xlites;x7;tpro;t20"}
|
||||
: ${SRCDIR:=$(dirname "$(pwd)/$0")/..}
|
||||
|
||||
: ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DDISABLE_COMPANION=YES -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"}
|
||||
|
@ -65,6 +65,9 @@ do
|
|||
tpro)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TPRO"
|
||||
;;
|
||||
t20)
|
||||
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=T20"
|
||||
;;
|
||||
xlite)
|
||||
BUILD_OPTIONS+="-DPCB=XLITE"
|
||||
;;
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
# -----------------------------------------------------------------------------
|
||||
export BRANCH_NAME="main" # main|2.9|...
|
||||
export RADIO_TYPE="tx16s" # tx16s|x10|x10-access|x12s|x9d|x9dp|x9lite|x9lites|x7|x7-access|t12|tx12|tx12mk2|boxer|t8|zorro|tlite|tpro|lr3pro|xlite|xlites|x9dp2019|x9e|x9e-hall|t16|t18|nv14|commando8|
|
||||
export RADIO_TYPE="tx16s" # tx16s|x10|x10-access|x12s|x9d|x9dp|x9lite|x9lites|x7|x7-access|t12|tx12|tx12mk2|boxer|t8|zorro|tlite|tpro|t20/lr3pro|xlite|xlites|x9dp2019|x9e|x9e-hall|t16|t18|nv14|commando8|
|
||||
|
||||
export BUILD_OPTIONS="-DDEFAULT_MODE=2 -DGVARS=YES -DPPM_UNIT=US"
|
||||
|
||||
|
@ -51,6 +51,9 @@ case $RADIO_TYPE in
|
|||
tpro)
|
||||
BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=TPRO"
|
||||
;;
|
||||
t20)
|
||||
BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=T20"
|
||||
;;
|
||||
lr3pro)
|
||||
BUILD_OPTIONS+=" -DPCB=X7 -DPCBREV=LR3PRO"
|
||||
;;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue