1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-24 16:55:20 +03:00

XLITE-S support

This commit is contained in:
Bertrand Songis 2018-08-15 15:08:49 +02:00
parent 543021a300
commit 2388b90a90
28 changed files with 376 additions and 57 deletions

View file

@ -1,7 +1,7 @@
include(CMakeForceCompiler)
include(Bitmaps)
set(PCB_TYPES X7 XLITE X9D X9D+ X9E X10 X12S SKY9X 9XRPRO AR9X)
set(PCB_TYPES X7 XLITE XLITES X9D X9D+ X9E X10 X12S SKY9X 9XRPRO AR9X)
set(GUI_LANGUAGES CZ DE EN ES FR IT PT SK SE PL HU NL)
set(TTS_LANGUAGES CZ DE EN ES FR IT PT SK SE PL HU NL RU)
@ -82,7 +82,7 @@ set(FATFS_SRC
if(PCB STREQUAL X12S OR PCB STREQUAL X10)
include(targets/horus/CMakeLists.txt)
elseif(PCB STREQUAL X9E OR PCB STREQUAL X9D+ OR PCB STREQUAL X9D OR PCB STREQUAL X7 OR PCB STREQUAL XLITE)
elseif(PCB STREQUAL X9E OR PCB STREQUAL X9D+ OR PCB STREQUAL X9D OR PCB STREQUAL X7 OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES)
include(targets/taranis/CMakeLists.txt)
elseif(PCB STREQUAL SKY9X OR PCB STREQUAL 9XRPRO OR PCB STREQUAL AR9X)
include(targets/sky9x/CMakeLists.txt)
@ -133,7 +133,7 @@ else()
add_definitions(-DEEPROM -DEEPROM_RAW)
endif()
if(ARCH STREQUAL ARM AND NOT PCB STREQUAL X12S AND NOT PCB STREQUAL X10 AND NOT PCB STREQUAL XLITE)
if(ARCH STREQUAL ARM AND NOT PCB STREQUAL X12S AND NOT PCB STREQUAL X10 AND NOT PCB STREQUAL XLITE AND NOT PCB STREQUAL XLITES)
add_definitions(-DEEPROM_CONVERSIONS)
set(SRC ${SRC} storage/eeprom_conversions.cpp)
endif()
@ -458,7 +458,7 @@ if(NOT MSVC)
set(SRC ${SRC} bin_allocator.cpp)
endif()
if(PCB STREQUAL XLITE OR PCB STREQUAL X9D OR PCB STREQUAL X9D+ OR PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL X10 OR PCB STREQUAL X12S)
if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES OR PCB STREQUAL X9D OR PCB STREQUAL X9D+ OR PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL X10 OR PCB STREQUAL X12S)
add_subdirectory(targets/common/arm/stm32/bootloader)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/targets/common/arm/stm32/bootloader)
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} bootloader)

View file

@ -358,7 +358,7 @@ enum SwitchSources {
SWSRC_FIRST_SWITCH,
#if defined(PCBTARANIS) || defined(PCBHORUS)
#if defined(PCBHORUS) || defined(PCBTARANIS)
SWSRC_SA0 = SWSRC_FIRST_SWITCH,
SWSRC_SA1,
SWSRC_SA2,
@ -371,22 +371,22 @@ enum SwitchSources {
SWSRC_SD0,
SWSRC_SD1,
SWSRC_SD2,
#if !defined(PCBX7) && !defined(PCBXLITE)
#if defined(PCBHORUS) || defined(PCBX9) || defined(PCBXLITES)
SWSRC_SE0,
SWSRC_SE1,
SWSRC_SE2,
#endif
#if !defined(PCBXLITE)
#if defined(PCBHORUS) || defined(PCBX9) || defined(PCBX7) || defined(PCBXLITES)
SWSRC_SF0,
SWSRC_SF1,
SWSRC_SF2,
#endif
#if !defined(PCBX7) && !defined(PCBXLITE)
#if defined(PCBHORUS) || defined(PCBX9)
SWSRC_SG0,
SWSRC_SG1,
SWSRC_SG2,
#endif
#if !defined(PCBXLITE)
#if defined(PCBHORUS) || defined(PCBX9) || defined(PCBX7)
SWSRC_SH0,
SWSRC_SH1,
SWSRC_SH2,
@ -423,15 +423,11 @@ enum SwitchSources {
SWSRC_SR1,
SWSRC_SR2,
#endif
#if defined(PCBX9E)
SWSRC_LAST_SWITCH = SWSRC_FIRST_SWITCH + NUM_SWITCHES_POSITIONS - 1,
#if NUM_SWITCHES >= 8
SWSRC_TRAINER = SWSRC_SH2,
SWSRC_LAST_SWITCH = SWSRC_SR2,
#elif defined(PCBXLITE)
SWSRC_TRAINER = SWSRC_SD2,
SWSRC_LAST_SWITCH = SWSRC_SD2,
#else
SWSRC_TRAINER = SWSRC_SH2,
SWSRC_LAST_SWITCH = SWSRC_SH2,
SWSRC_TRAINER = SWSRC_LAST_SWITCH,
#endif
#else // neither Taranis nor Horus
SWSRC_ID0 = SWSRC_FIRST_SWITCH,
@ -607,25 +603,23 @@ enum MixSources {
MIXSRC_FIRST_SWITCH,
#if defined(PCBXLITE)
#if defined(PCBHORUS) || defined(PCBTARANIS)
MIXSRC_SA = MIXSRC_FIRST_SWITCH, LUA_EXPORT("sa", "Switch A")
MIXSRC_SB, LUA_EXPORT("sb", "Switch B")
MIXSRC_SC, LUA_EXPORT("sc", "Switch C")
MIXSRC_SD, LUA_EXPORT("sd", "Switch D")
MIXSRC_LAST_SWITCH = MIXSRC_SD,
#elif defined(PCBTARANIS) || defined(PCBHORUS)
MIXSRC_SA = MIXSRC_FIRST_SWITCH, LUA_EXPORT("sa", "Switch A")
MIXSRC_SB, LUA_EXPORT("sb", "Switch B")
MIXSRC_SC, LUA_EXPORT("sc", "Switch C")
MIXSRC_SD, LUA_EXPORT("sd", "Switch D")
#if !defined(PCBX7)
#if defined(PCBHORUS) || defined(PCBX9) || defined(PCBXLITES)
MIXSRC_SE, LUA_EXPORT("se", "Switch E")
#endif
#if defined(PCBHORUS) || defined(PCBX9) || defined(PCBX7) || defined(PCBXLITES)
MIXSRC_SF, LUA_EXPORT("sf", "Switch F")
#if !defined(PCBX7)
#endif
#if defined(PCBHORUS) || defined(PCBX9)
MIXSRC_SG, LUA_EXPORT("sg", "Switch G")
#endif
#if defined(PCBHORUS) || defined(PCBX9) || defined(PCBX7)
MIXSRC_SH, LUA_EXPORT("sh", "Switch H")
#endif
#if defined(PCBX9E)
MIXSRC_SI, LUA_EXPORT("si", "Switch I")
MIXSRC_SJ, LUA_EXPORT("sj", "Switch J")
@ -637,9 +631,6 @@ enum MixSources {
MIXSRC_SP, LUA_EXPORT("sp", "Switch P")
MIXSRC_SQ, LUA_EXPORT("sq", "Switch Q")
MIXSRC_SR, LUA_EXPORT("sr", "Switch R")
MIXSRC_LAST_SWITCH = MIXSRC_SR,
#else
MIXSRC_LAST_SWITCH = MIXSRC_SH,
#endif
#else
MIXSRC_3POS = MIXSRC_FIRST_SWITCH,
@ -649,7 +640,6 @@ enum MixSources {
MIXSRC_AIL,
MIXSRC_GEA,
MIXSRC_TRN,
MIXSRC_LAST_SWITCH = MIXSRC_TRN,
#endif
MIXSRC_FIRST_LOGICAL_SWITCH,
MIXSRC_SW1 = MIXSRC_FIRST_LOGICAL_SWITCH, LUA_EXPORT_MULTIPLE("ls", "Logical switch L%d", MAX_LOGICAL_SWITCHES)
@ -703,8 +693,9 @@ enum MixSources {
MIXSRC_LAST_TELEM = MIXSRC_FIRST_TELEM+3*MAX_TELEMETRY_SENSORS-1
};
#define MIXSRC_FIRST (MIXSRC_NONE+1)
#define MIXSRC_FIRST (MIXSRC_NONE + 1)
#define MIXSRC_LAST MIXSRC_LAST_CH
#define MIXSRC_LAST_SWITCH (MIXSRC_FIRST_SWITCH + NUM_SWITCHES - 1)
#define INPUTSRC_FIRST MIXSRC_Rud
#define INPUTSRC_LAST MIXSRC_LAST_TELEM

View file

@ -626,7 +626,8 @@ PACK(struct TrainerData {
NOBACKUP(uint8_t jitterFilter:1); /* 0 - active */\
NOBACKUP(uint8_t disableRssiPoweroffAlarm:1); \
NOBACKUP(uint8_t USBMode:2); \
NOBACKUP(uint8_t spareExtraArm:3); \
NOBACKUP(uint8_t jackMode:2); \
NOBACKUP(uint8_t spareExtraArm:1); \
NOBACKUP(char ttsLanguage[2]); \
NOBACKUP(int8_t beepVolume:4); \
NOBACKUP(int8_t wavVolume:4); \
@ -869,7 +870,10 @@ static inline void check_struct()
CHKSIZE(RssiAlarmData, 2);
CHKSIZE(TrainerData, 16);
#if defined(PCBXLITE)
#if defined(PCBXLITES)
CHKSIZE(RadioData, 850);
CHKSIZE(ModelData, 6025);
#elif defined(PCBXLITE)
CHKSIZE(RadioData, 844);
CHKSIZE(ModelData, 6025);
#elif defined(PCBX7)

View file

@ -97,6 +97,7 @@ enum MenuRadioSetupItems {
IF_FAI_CHOICE(ITEM_SETUP_FAI)
ITEM_SETUP_SWITCHES_DELAY,
CASE_STM32(ITEM_SETUP_USB_MODE)
CASE_JACK_DETECT(ITEM_SETUP_JACK_MODE)
ITEM_SETUP_RX_CHANNEL_ORD,
ITEM_SETUP_STICK_MODE_LABELS,
ITEM_SETUP_STICK_MODE,
@ -131,7 +132,11 @@ void menuRadioSetup(event_t event)
}
#endif
MENU(STR_MENURADIOSETUP, menuTabGeneral, MENU_RADIO_SETUP, HEADER_LINE+ITEM_SETUP_MAX, { HEADER_LINE_COLUMNS CASE_RTCLOCK(2) CASE_RTCLOCK(2) CASE_BATTGRAPH(1) LABEL(SOUND), CASE_AUDIO(0) CASE_BUZZER(0) 0, 0, 0, 0, 0, CASE_AUDIO(0) CASE_VARIO(LABEL(VARIO)) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, CASE_CAPACITY(0) CASE_PCBSKY9X(0) 0, 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, 0, CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(0) 0, CASE_GPS(0) CASE_PXX(0) 0, 0, IF_FAI_CHOICE(0) 0, CASE_STM32(0) 0, COL_TX_MODE, 0, 1/*to force edit mode*/});
MENU(STR_MENURADIOSETUP, menuTabGeneral, MENU_RADIO_SETUP, HEADER_LINE+ITEM_SETUP_MAX, { HEADER_LINE_COLUMNS CASE_RTCLOCK(2) CASE_RTCLOCK(2) CASE_BATTGRAPH(1)
LABEL(SOUND), CASE_AUDIO(0) CASE_BUZZER(0) 0, 0, 0, 0, 0, CASE_AUDIO(0) CASE_VARIO(LABEL(VARIO)) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_VARIO(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, CASE_CAPACITY(0) CASE_PCBSKY9X(0) 0, 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, 0, CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(0) 0, CASE_GPS(0) CASE_PXX(0) 0, 0, IF_FAI_CHOICE(0) 0,
CASE_STM32(0) // USB mode
CASE_JACK_DETECT(0) // Jack mode
0, COL_TX_MODE, 0, 1/*to force edit mode*/});
if (event == EVT_ENTRY) {
reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode;
@ -524,11 +529,19 @@ void menuRadioSetup(event_t event)
lcdDrawText(lcdLastRightPos, y, STR_MS, attr);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.switchesDelay, -15, 100-15);
break;
#if defined(STM32)
case ITEM_SETUP_USB_MODE:
g_eeGeneral.USBMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_USBMODE, STR_USBMODES, g_eeGeneral.USBMode, USB_UNSELECTED_MODE, USB_MAX_MODE, attr, event);
break;
#endif
#if defined(JACK_DETECT_GPIO)
case ITEM_SETUP_JACK_MODE:
g_eeGeneral.jackMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_JACKMODE, STR_JACKMODES, g_eeGeneral.jackMode, JACK_UNSELECTED_MODE, JACK_MAX_MODE, attr, event);
break;
#endif
case ITEM_SETUP_RX_CHANNEL_ORD:
lcdDrawTextAlignedLeft(y, STR_RXCHANNELORD); // RAET->AETR
for (uint8_t i=1; i<=4; i++) {

View file

@ -671,10 +671,10 @@ bool luaLoadTelemetryScript(uint8_t index)
ScriptInternalData & sid = scriptInternalData[luaScriptsCount++];
sid.reference = SCRIPT_TELEMETRY_FIRST+index;
sid.state = SCRIPT_NOFILE;
char filename[sizeof(SCRIPTS_TELEM_PATH)+sizeof(script.file)+sizeof(SCRIPT_EXT)] = SCRIPTS_TELEM_PATH "/";
strncpy(filename+sizeof(SCRIPTS_TELEM_PATH), script.file, sizeof(script.file));
filename[sizeof(SCRIPTS_TELEM_PATH)+sizeof(script.file)] = '\0';
strcat(filename+sizeof(SCRIPTS_TELEM_PATH), SCRIPT_EXT);
char filename[sizeof(SCRIPTS_TELEM_PATH) + LEN_SCRIPT_FILENAME + sizeof(SCRIPT_EXT)] = SCRIPTS_TELEM_PATH "/";
strncpy(filename + sizeof(SCRIPTS_TELEM_PATH), script.file, LEN_SCRIPT_FILENAME);
filename[sizeof(SCRIPTS_TELEM_PATH) + LEN_SCRIPT_FILENAME] = '\0';
strcat(filename + sizeof(SCRIPTS_TELEM_PATH), SCRIPT_EXT);
if (luaLoad(lsScripts, filename, sid) == SCRIPT_PANIC) {
return false;
}

View file

@ -74,6 +74,83 @@ void handleUsbConnection()
#endif // defined(STM32) && !defined(SIMU)
}
#if defined(JACK_DETECT_GPIO)
bool isJackPlugged()
{
// debounce
static bool debounced_state = 0;
static bool last_state = 0;
if (GPIO_ReadInputDataBit(JACK_DETECT_GPIO, JACK_DETECT_GPIO_PIN)) {
if (!last_state) {
debounced_state = false;
}
last_state = false;
}
else {
if (last_state) {
debounced_state = true;
}
last_state = true;
}
return debounced_state;
}
#endif
enum JackState
{
SPEAKER_ACTIVE,
HEADPHONE_ACTIVE,
TRAINER_ACTIVE,
};
uint8_t jackState = SPEAKER_ACTIVE;
const char STR_JACK_HEADPHONE[] = "Headphone";
const char STR_JACK_TRAINER[] = "Trainer";
void onJackConnectMenu(const char * result)
{
if (result == STR_JACK_HEADPHONE) {
jackState = HEADPHONE_ACTIVE;
disableSpeaker();
enableHeadphone();
}
else if (result == STR_JACK_TRAINER) {
jackState = TRAINER_ACTIVE;
enableTrainer();
}
}
void handleJackConnection()
{
#if defined(JACK_DETECT_GPIO)
if (jackState == SPEAKER_ACTIVE && isJackPlugged()) {
if (g_eeGeneral.jackMode == JACK_HEADPHONE_MODE) {
jackState = HEADPHONE_ACTIVE;
disableSpeaker();
enableHeadphone();
}
else if (g_eeGeneral.jackMode == JACK_TRAINER_MODE) {
jackState = TRAINER_ACTIVE;
enableTrainer();
}
else if (popupMenuNoItems == 0) {
POPUP_MENU_ADD_ITEM(STR_JACK_HEADPHONE);
POPUP_MENU_ADD_ITEM(STR_JACK_TRAINER);
POPUP_MENU_START(onJackConnectMenu);
}
}
else if (jackState == SPEAKER_ACTIVE && !isJackPlugged() && popupMenuNoItems > 0 && popupMenuHandler == onJackConnectMenu) {
popupMenuNoItems = 0;
}
else if (jackState != SPEAKER_ACTIVE && !isJackPlugged()) {
jackState = SPEAKER_ACTIVE;
enableSpeaker();
}
#endif
}
void checkSpeakerVolume()
{
if (currentSpeakerVolume != requiredSpeakerVolume) {
@ -409,6 +486,7 @@ void perMain()
checkEeprom();
logsWrite();
handleUsbConnection();
handleJackConnection();
checkTrainerSettings();
periodicTick();
DEBUG_TIMER_STOP(debugTimerPerMain1);

View file

@ -248,7 +248,9 @@ void generalDefault()
g_eeGeneral.slidersConfig = 0x03; // LS and RS = sliders with detent
#endif
#if defined(PCBXLITE)
#if defined(PCBXLITES)
g_eeGeneral.switchConfig = (SWITCH_TOGGLE << 10) + (SWITCH_TOGGLE << 8) + (SWITCH_2POS << 6) + (SWITCH_2POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0); // 2x3POS, 2x2POS
#elif defined(PCBXLITE)
g_eeGeneral.switchConfig = (SWITCH_2POS << 6) + (SWITCH_2POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0); // 2x3POS, 2x2POS
#elif defined(PCBX7)
g_eeGeneral.switchConfig = 0x000006ff; // 4x3POS, 1x2POS, 1xTOGGLE

View file

@ -211,6 +211,12 @@
#include "board.h"
#if defined(JACK_DETECT_GPIO)
#define CASE_JACK_DETECT(x) x,
#else
#define CASE_JACK_DETECT(x)
#endif
#if defined(DISK_CACHE)
#include "disk_cache.h"
#endif
@ -1290,4 +1296,13 @@ extern JitterMeter<uint16_t> avgJitter[NUM_ANALOGS];
#include "bluetooth.h"
#endif
#if defined(JACK_DETECT_GPIO)
enum JackMode {
JACK_UNSELECTED_MODE,
JACK_HEADPHONE_MODE,
JACK_TRAINER_MODE,
JACK_MAX_MODE = JACK_TRAINER_MODE
};
#endif
#endif // _OPENTX_H_

View file

@ -266,7 +266,7 @@ char * getSwitchString(char * dest, swsrc_t idx)
else
*s++ = 'A'+swinfo.quot;
#else
*s++ = 'A'+swinfo.quot;
*s++ = 'A' + swinfo.quot;
#endif
}
*s++ = "\300-\301"[swinfo.rem];

View file

@ -280,6 +280,7 @@ enum EnumSwitchesPositions
SW_SH0,
SW_SH1,
SW_SH2,
NUM_SWITCHES_POSITIONS
};
void keysInit(void);
uint8_t keyState(uint8_t index);

View file

@ -98,9 +98,27 @@ elseif(PCB STREQUAL XLITE)
set(FONTS_TARGET 9x_fonts_1bit)
set(LCD_DRIVER lcd_driver_spi.cpp)
set(GVAR_SCREEN model_gvars.cpp)
elseif(PCB STREQUAL XLITES)
set(PXX_FREQUENCY "HIGH" CACHE STRING "PXX frequency (LOW / HIGH)")
set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
set(CPU_TYPE STM32F2)
set(CPU_TYPE_FULL STM32F205xE) # for size report
set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
set(HAPTIC YES)
set(LUA_EXPORT lua_export_xlite)
set(FLAVOUR xlites)
add_definitions(-DPCBXLITES -DPCBXLITE -DSOFTWARE_VOLUME)
add_definitions(-DEEPROM_VARIANT=0x2000)
add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
set(GUI_DIR 128x64)
set(NAVIGATION_TYPE xlite)
set(BITMAPS_TARGET 9x_bitmaps)
set(FONTS_TARGET 9x_fonts_1bit)
set(LCD_DRIVER lcd_driver_spi.cpp)
set(GVAR_SCREEN model_gvars.cpp)
endif()
if(PCB STREQUAL XLITE)
if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES)
if(PXX_FREQUENCY STREQUAL HIGH)
add_definitions(-DPXX_FREQUENCY_HIGH)
endif()
@ -124,7 +142,7 @@ else()
)
endif()
if(PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL XLITE)
if(PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES)
add_definitions(-DBLUETOOTH)
set(TARGET_SRC
${TARGET_SRC}
@ -163,7 +181,7 @@ set(GUI_SRC ${GUI_SRC}
../screenshot.cpp
)
if(PCB STREQUAL X7 OR PCB STREQUAL XLITE)
if(PCB STREQUAL X7 OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES)
set(LED_DRIVER led_driver.cpp)
endif()
@ -177,7 +195,7 @@ set(TARGET_SRC
../common/arm/stm32/adc_driver.cpp
)
if(PCB STREQUAL XLITE)
if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES)
set(TARGET_SRC
${TARGET_SRC}
../common/arm/stm32/sticks_pwm_driver.cpp

View file

@ -272,6 +272,15 @@ void boardInit()
if (HAS_SPORT_UPDATE_CONNECTOR()) {
sportUpdateInit();
}
#if defined(AUDIO_JACK_DETECT_GPIO)
initJackDetect(void);
#endif
initSpeakerEnable();
enableSpeaker();
initHeadphoneTrainerSwitch();
#endif // !defined(SIMU)
}
@ -357,3 +366,51 @@ uint16_t getBatteryVoltage()
instant_vbat += 20; // add 0.2V because of the diode TODO check if this is needed, but removal will beak existing calibrations!!!
return (uint16_t)instant_vbat;
}
#if defined(AUDIO_SPEAKER_ENABLE_GPIO)
void initSpeakerEnable()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = AUDIO_SPEAKER_ENABLE_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(AUDIO_SPEAKER_ENABLE_GPIO, &GPIO_InitStructure);
}
void enableSpeaker()
{
GPIO_SetBits(AUDIO_SPEAKER_ENABLE_GPIO, AUDIO_SPEAKER_ENABLE_GPIO_PIN);
}
void disableSpeaker()
{
GPIO_ResetBits(AUDIO_SPEAKER_ENABLE_GPIO, AUDIO_SPEAKER_ENABLE_GPIO_PIN);
}
#endif
#if defined(HEADPHONE_TRAINER_SWITCH_GPIO)
void initHeadphoneTrainerSwitch()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = HEADPHONE_TRAINER_SWITCH_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(HEADPHONE_TRAINER_SWITCH_GPIO, &GPIO_InitStructure);
}
void enableHeadphone()
{
GPIO_ResetBits(HEADPHONE_TRAINER_SWITCH_GPIO, HEADPHONE_TRAINER_SWITCH_GPIO_PIN);
}
void enableTrainer()
{
GPIO_SetBits(HEADPHONE_TRAINER_SWITCH_GPIO, HEADPHONE_TRAINER_SWITCH_GPIO_PIN);
}
#endif

View file

@ -313,22 +313,22 @@ enum EnumSwitchesPositions
SW_SD0,
SW_SD1,
SW_SD2,
#if !defined(PCBX7) && !defined(PCBXLITE)
#if defined(PCBX9) || defined(PCBXLITES)
SW_SE0,
SW_SE1,
SW_SE2,
#endif
#if !defined(PCBXLITE)
#if defined(PCBX9) || defined(PCBX7) || defined(PCBXLITES)
SW_SF0,
SW_SF1,
SW_SF2,
#endif
#if !defined(PCBX7) && !defined(PCBXLITE)
#if defined(PCBX9)
SW_SG0,
SW_SG1,
SW_SG2,
#endif
#if !defined(PCBXLITE)
#if defined(PCBX9) || defined(PCBX7)
SW_SH0,
SW_SH1,
SW_SH2,
@ -365,8 +365,11 @@ enum EnumSwitchesPositions
SW_SR1,
SW_SR2,
#endif
NUM_SWITCHES_POSITIONS
};
#if defined(PCBXLITE)
#if defined(PCBXLITES)
#define NUM_SWITCHES 6
#elif defined(PCBXLITE)
#define NUM_SWITCHES 4
#elif defined(PCBX7)
#define NUM_SWITCHES 6
@ -605,6 +608,28 @@ void setScaledVolume(uint8_t volume);
void setVolume(uint8_t volume);
int32_t getVolume(void);
#endif
#if defined(AUDIO_SPEAKER_ENABLE_GPIO)
void initSpeakerEnable(void);
void enableSpeaker();
void disableSpeaker();
#else
static inline void initSpeakerEnable(void) { }
static inline void enableSpeaker(void) { }
static inline void disableSpeaker(void) { }
#endif
#if defined(HEADPHONE_TRAINER_SWITCH_GPIO)
void initHeadphoneTrainerSwitch(void);
void enableHeadphone(void);
void enableTrainer(void);
#else
static inline void initHeadphoneTrainerSwitch(void) { }
static inline void enableHeadphone(void) { }
static inline void enableTrainer(void) { }
#endif
#if defined(AUDIO_JACK_DETECT_GPIO)
void initJackDetect(void);
bool isJackPlugged();
#endif
void audioConsumeCurrentBuffer();
#define audioDisableIrq() __disable_irq()
#define audioEnableIrq() __enable_irq()

View file

@ -253,6 +253,9 @@
#define SWITCHES_GPIO_PIN_E_H GPIO_Pin_7 // PE.07
#define SWITCHES_GPIO_REG_E_L GPIOE->IDR
#define SWITCHES_GPIO_PIN_E_L GPIO_Pin_13 // PE.13
#elif defined(PCBXLITES)
#define SWITCHES_GPIO_REG_E GPIOE->IDR
#define SWITCHES_GPIO_PIN_E GPIO_Pin_5 // PE.05
#elif defined(PCBX7) || defined(PCBXLITE)
// no SWE
#else
@ -265,6 +268,9 @@
#if defined(PCBX9E)
#define SWITCHES_GPIO_REG_F GPIOE->IDR
#define SWITCHES_GPIO_PIN_F GPIO_Pin_11 // PE.11
#elif defined(PCBXLITES)
#define SWITCHES_GPIO_REG_F GPIOC->IDR
#define SWITCHES_GPIO_PIN_F GPIO_Pin_3 // PC.03
#elif defined(PCBXLITE)
// no SWF
#elif defined(PCBX7)
@ -364,6 +370,12 @@
#define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR)
#define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE | SWITCHES_GPIO_PIN_H)
#define KEYS_GPIOE_PINS (KEYS_GPIO_PIN_PLUS | KEYS_GPIO_PIN_ENTER | KEYS_GPIO_PIN_MINUS | TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_LHL | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | SWITCHES_GPIO_PIN_F | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L)
#elif defined(PCBXLITES)
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOE)
#define KEYS_GPIOA_PINS (GPIO_Pin_5 | GPIO_Pin_6)
#define KEYS_GPIOB_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5)
#define KEYS_GPIOC_PINS (GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5)
#define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14)
#elif defined(PCBXLITE)
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOE)
#define KEYS_GPIOA_PINS (GPIO_Pin_5 | GPIO_Pin_6)
@ -576,11 +588,17 @@
// Internal Module
#if defined(PCBXLITE)
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
#define INTMODULE_RCC_APB1Periph RCC_APB1Periph_TIM3
#define INTMODULE_RCC_APB2Periph RCC_APB2Periph_USART1
#if defined(PCBXLITES)
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA2)
#define INTMODULE_PWR_GPIO GPIOA
#define INTMODULE_PWR_GPIO_PIN GPIO_Pin_15 // PA.15
#else
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
#define INTMODULE_PWR_GPIO GPIOD
#define INTMODULE_PWR_GPIO_PIN GPIO_Pin_9 // PD.09
#endif
#define INTMODULE_TX_GPIO GPIOB
#define INTMODULE_TX_GPIO_PIN GPIO_Pin_6 // PB.06
#define INTMODULE_RX_GPIO GPIOB
@ -857,6 +875,19 @@
#define BACKLIGHT_GPIO_PinSource_2 GPIO_PinSource13
#define BACKLIGHT_GPIO_AF_1 GPIO_AF_TIM4
#define BACKLIGHT_GPIO_AF_2 GPIO_AF_TIM4
#elif defined(PCBXLITES)
#define BACKLIGHT_RCC_AHB1Periph RCC_AHB1Periph_GPIOA
#define BACKLIGHT_RCC_APB1Periph 0
#define BACKLIGHT_RCC_APB2Periph RCC_APB2Periph_TIM1
#define BACKLIGHT_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
#define BACKLIGHT_TIMER TIM1
#define BACKLIGHT_GPIO GPIOA
#define BACKLIGHT_GPIO_PIN GPIO_Pin_10 // PA.10
#define BACKLIGHT_GPIO_PinSource GPIO_PinSource10
#define BACKLIGHT_GPIO_AF GPIO_AF_TIM1
#define BACKLIGHT_CCMR2 TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2 // Channel 3, PWM
#define BACKLIGHT_CCER TIM_CCER_CC3E
#define BACKLIGHT_COUNTER_REGISTER BACKLIGHT_TIMER->CCR3
#elif defined(PCBXLITE)
#define BACKLIGHT_RCC_AHB1Periph RCC_AHB1Periph_GPIOA
#define BACKLIGHT_RCC_APB1Periph 0
@ -1005,6 +1036,23 @@
#define I2C_ADDRESS_VOLUME 0x5C
#define I2C_FLASH_PAGESIZE 64
// Second I2C Bus: IMU
#if defined(PCBXLITES)
#define I2CX_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC)
#define I2CX_RCC_APB1Periph RCC_APB1Periph_I2C3
#define I2CX I2C3
#define I2CX_SCL_GPIO GPIOA
#define I2CX_SCL_GPIO_PIN GPIO_Pin_8 // PA.08
#define I2CX_SDA_GPIO GPIOC
#define I2CX_SDA_GPIO_PIN GPIO_Pin_9 // PC.09
#define I2CX_GPIO_AF GPIO_AF_I2C3
#define I2CX_SCL_GPIO_PinSource GPIO_PinSource8
#define I2CX_SDA_GPIO_PinSource GPIO_PinSource9
#define I2CX_SPEED 400000
#define I2CX_IMU_INT_GPIO GPIOC
#define I2CX_IMU_INT_GPIO_PIN GPIO_Pin_8 // PC.08
#endif
// SD - SPI2
#define SD_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1)
#define SD_RCC_APB1Periph RCC_APB1Periph_SPI2
@ -1037,7 +1085,6 @@
#endif
// Audio
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
#define AUDIO_RCC_APB1Periph (RCC_APB1Periph_TIM6 | RCC_APB1Periph_DAC)
#define AUDIO_OUTPUT_GPIO GPIOA
#define AUDIO_OUTPUT_GPIO_PIN GPIO_Pin_4 // PA.04
@ -1049,6 +1096,18 @@
#define AUDIO_TIMER TIM6
#define AUDIO_DMA DMA1
#if defined(PCBXLITES)
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1)
#define JACK_DETECT_GPIO GPIOC
#define JACK_DETECT_GPIO_PIN GPIO_Pin_13 // PC.13
#define AUDIO_SPEAKER_ENABLE_GPIO GPIOD
#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_13 // PD.13
#else
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
#endif
// Haptic
#if defined(PCBXLITE)
#define HAPTIC_PWM

View file

@ -204,7 +204,11 @@ uint32_t switchState(uint8_t index)
ADD_3POS_CASE(B, 1);
ADD_3POS_CASE(C, 2);
ADD_3POS_CASE(D, 3);
#if defined(PCBXLITE)
#if defined(PCBXLITES)
ADD_2POS_CASE(E);
ADD_2POS_CASE(F);
// no SWF, SWG and SWH on XLITE
#elif defined(PCBXLITE)
// no SWF, SWG and SWH on XLITE
#elif defined(PCBX7)
ADD_2POS_CASE(F);

View file

@ -88,6 +88,7 @@ const char STR_OPEN9X[] =
ISTR(VVARIOCENTER)
ISTR(COUNTRYCODES)
ISTR(USBMODES)
ISTR(JACKMODES)
ISTR(VFAILSAFE)
ISTR(VTRAINERMODES)
ISTR(TARANIS_PROTOCOLS)
@ -359,6 +360,7 @@ const char STR_MODULE_TELEMETRY[] = TR_MODULE_TELEMETRY;
const char STR_MODULE_TELEM_ON[] = TR_MODULE_TELEM_ON;
const char STR_COUNTRYCODE[] = TR_COUNTRYCODE;
const char STR_USBMODE[] = TR_USBMODE;
const char STR_JACKMODE[] = TR_JACKMODE;
const char STR_FAILSAFE[] = TR_FAILSAFE;
const char STR_FAILSAFESET[] = TR_FAILSAFESET;
const char STR_HOLD[] = TR_HOLD;

View file

@ -185,7 +185,8 @@ extern const char STR_OPEN9X[];
#define OFS_VVARIOCENTER (OFS_VBEEPCOUNTDOWN + sizeof(TR_VBEEPCOUNTDOWN))
#define OFS_COUNTRYCODES (OFS_VVARIOCENTER + sizeof(TR_VVARIOCENTER))
#define OFS_USBMODES (OFS_COUNTRYCODES + sizeof(TR_COUNTRYCODES))
#define OFS_VFAILSAFE (OFS_USBMODES + sizeof(TR_USBMODES))
#define OFS_JACKMODES (OFS_USBMODES + sizeof(TR_USBMODES))
#define OFS_VFAILSAFE (OFS_JACKMODES + sizeof(TR_JACKMODES))
#define OFS_VTRAINERMODES (OFS_VFAILSAFE + sizeof(TR_VFAILSAFE))
#define OFS_TARANIS_PROTOCOLS (OFS_VTRAINERMODES + sizeof(TR_VTRAINERMODES))
#define OFS_R9M_REGION (OFS_TARANIS_PROTOCOLS + sizeof(TR_TARANIS_PROTOCOLS))
@ -290,6 +291,7 @@ extern const char STR_OPEN9X[];
#define STR_COUNTRYCODES (STR_OPEN9X + OFS_COUNTRYCODES)
#define STR_USBMODES (STR_OPEN9X + OFS_USBMODES)
#define STR_JACKMODES (STR_OPEN9X + OFS_JACKMODES)
#define STR_VFAILSAFE (STR_OPEN9X + OFS_VFAILSAFE)
#define STR_VTRAINERMODES (STR_OPEN9X + OFS_VTRAINERMODES)
@ -579,6 +581,7 @@ extern const char STR_MENUSENSOR[];
extern const char STR_SENSOR[];
extern const char STR_COUNTRYCODE[];
extern const char STR_USBMODE[];
extern const char STR_JACKMODE[];
extern const char STR_DISABLE_INTERNAL[];
#if defined(TELEMETRY_FRSKY)

View file

@ -99,6 +99,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "Vyp\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
@ -927,6 +930,7 @@
#define TR_SENSOR "SENZOR"
#define TR_COUNTRYCODE "Kód regionu"
#define TR_USBMODE "USB Mode"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG "Jazyk hlasu"
#define TR_UNITSSYSTEM "Jednotky"
#define TR_EDIT "Upravit"

View file

@ -101,6 +101,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Fragen""Joyst\0""SDCard""Serial", "Fragen\0 ""Joystick""Speicher""Seriell\0")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "AUS\0""PPM\0""XJT\0""DSM?""CRSF""MULT""R9M\0""SBUS"
@ -932,6 +935,7 @@
#define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Landescode"
#define TR_USBMODE "USB Modus"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG "Sprach-Ansagen"
#define TR_UNITSSYSTEM "Einheiten"
#define TR_EDIT "Zeile Editieren"

View file

@ -101,6 +101,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
@ -420,6 +423,9 @@
#elif defined(PCBX9E)
#define TR_POTS_VSRCRAW "\310F1\0""\310F2\0""\310F3\0""\310F4\0""\311S1\0""\311S2\0""\311LS\0""\311RS\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0""\312SI\0""\312SJ\0""\312SK\0""\312SL\0""\312SM\0""\312SN\0""\312SO\0""\312SP\0""\312SQ\0""\312SR\0"
#elif defined(PCBXLITES)
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0"
#elif defined(PCBXLITE)
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0"
@ -931,6 +937,7 @@
#define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Country code"
#define TR_USBMODE "USB Mode"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG "Voice language"
#define TR_UNITSSYSTEM "Units"
#define TR_EDIT "Edit"

View file

@ -101,6 +101,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
@ -938,6 +941,7 @@
#define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Codigo Pais"
#define TR_USBMODE "USB Mode"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG "Idioma voces"
#define TR_UNITSSYSTEM "Unidades"
#define TR_EDIT "Editar"

View file

@ -101,6 +101,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
@ -930,6 +933,7 @@
#define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Country Code"
#define TR_USBMODE "USB Mode"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG "Voice Language"
#define TR_UNITSSYSTEM "Units"
#define TR_EDIT "Edit"

View file

@ -101,6 +101,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Popup\0""Joyst\0""SDCard""Série\0", "Demander""Joystick""Stockage""Série\0 ")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
@ -942,6 +945,7 @@
#define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE TR("Zone géo.", "Zone géographique")
#define TR_USBMODE "USB Mode"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG TR("Langue voix", "Langue annonces vocales")
#define TR_UNITSSYSTEM "Unités"
#define TR_EDIT "Editer"

View file

@ -101,6 +101,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
@ -932,6 +935,7 @@
#define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE TR("Codice Paese","Standard 2.4Ghz")
#define TR_USBMODE "USB Mode"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG "Lingua Voce"
#define TR_UNITSSYSTEM "Unità"
#define TR_EDIT "Modifica"

View file

@ -103,6 +103,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "UIT\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
@ -933,6 +936,7 @@
#define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Landcode"
#define TR_USBMODE "USB Mode"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG "Taal"
#define TR_UNITSSYSTEM "Eenheden"
#define TR_EDIT "Wijzigen"

View file

@ -101,6 +101,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
@ -933,6 +936,7 @@
#define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Kod regionu"
#define TR_USBMODE "USB Mode"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG "Język głosu"
#define TR_UNITSSYSTEM "Jednostki"
#define TR_EDIT "Edytuj"

View file

@ -101,6 +101,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
@ -937,6 +940,7 @@
#define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Country Code"
#define TR_USBMODE "USB Mode"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG "Voice Language"
#define TR_UNITSSYSTEM "Units"
#define TR_EDIT "Edit"

View file

@ -101,6 +101,9 @@
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
#define LEN_JACKMODES "\007"
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "Av\0 ""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
@ -944,6 +947,7 @@
#define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Landskod"
#define TR_USBMODE "USB Mode"
#define TR_JACKMODE "Jack Mode"
#define TR_VOICELANG "Röstspråk"
#define TR_UNITSSYSTEM "Enheter"
#define TR_EDIT "Redigera"