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

Allow USB mode selection on USB connect (#5193)

Allow all USB modes to be compiled in at the same time
This commit is contained in:
Arne Schwabe 2017-09-10 17:28:08 +02:00 committed by Bertrand Songis
parent 2910488a30
commit b7acee5723
45 changed files with 1515 additions and 1239 deletions

View file

@ -3703,7 +3703,8 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type
if (version >= 218) { if (version >= 218) {
internalField.Append(new BoolField<1>(this, generalData.jitterFilter)); internalField.Append(new BoolField<1>(this, generalData.jitterFilter));
internalField.Append(new BoolField<1>(this, generalData.disableRssiPoweroffAlarm)); internalField.Append(new BoolField<1>(this, generalData.disableRssiPoweroffAlarm));
internalField.Append(new SpareBitsField<5>(this)); internalField.Append(new UnsignedField<2>(this, generalData.usbMode));
internalField.Append(new SpareBitsField<3>(this));
} }
else { else {
internalField.Append(new SpareBitsField<7>(this)); internalField.Append(new SpareBitsField<7>(this));

View file

@ -1133,10 +1133,6 @@ void addOpenTxFrskyOptions(OpenTxFirmware * firmware)
firmware->addOption("lua", QObject::tr("Support for Lua model scripts")); firmware->addOption("lua", QObject::tr("Support for Lua model scripts"));
firmware->addOption("luac", QObject::tr("Enable Lua compiler")); firmware->addOption("luac", QObject::tr("Enable Lua compiler"));
firmware->addOption("bindopt", QObject::tr("Enable bindings options")); firmware->addOption("bindopt", QObject::tr("Enable bindings options"));
Option usb_options[] = {{"massstorage", QObject::tr("Instead of Joystick emulation, USB connection is Mass Storage (as in the Bootloader)")},
{"cli", QObject::tr("Instead of Joystick emulation, USB connection is Command Line Interface")},
{NULL}};
firmware->addOptions(usb_options);
} }
void addOpenTxTaranisOptions(OpenTxFirmware * firmware) void addOpenTxTaranisOptions(OpenTxFirmware * firmware)

View file

@ -27,8 +27,8 @@ ui(new Ui::GeneralSetup)
{ {
ui->setupUi(this); ui->setupUi(this);
QLabel * pmsl[] = {ui->ro_label,ui->ro1_label,ui->ro2_label,ui->ro3_label,ui->ro4_label,ui->ro5_label,ui->ro6_label,ui->ro7_label,ui->ro8_label, NULL}; QLabel *pmsl[] = {ui->ro_label, ui->ro1_label, ui->ro2_label, ui->ro3_label, ui->ro4_label, ui->ro5_label, ui->ro6_label, ui->ro7_label, ui->ro8_label, NULL};
QSlider * tpmsld[] = {ui->chkSA, ui->chkSB, ui->chkSC, ui->chkSD, ui->chkSE, ui->chkSF, ui->chkSG, ui->chkSH, NULL}; QSlider *tpmsld[] = {ui->chkSA, ui->chkSB, ui->chkSC, ui->chkSD, ui->chkSE, ui->chkSF, ui->chkSG, ui->chkSH, NULL};
if (IS_TARANIS(firmware->getBoard())) { if (IS_TARANIS(firmware->getBoard())) {
ui->contrastSB->setMinimum(0); ui->contrastSB->setMinimum(0);
@ -44,27 +44,27 @@ ui(new Ui::GeneralSetup)
switchstate >>= 2; switchstate >>= 2;
ui->chkSE->setValue(switchstate & 0x3); ui->chkSE->setValue(switchstate & 0x3);
switchstate >>= 2; switchstate >>= 2;
ui->chkSF->setValue((switchstate & 0x3)/2); ui->chkSF->setValue((switchstate & 0x3) / 2);
switchstate >>= 2; switchstate >>= 2;
ui->chkSG->setValue(switchstate & 0x3); ui->chkSG->setValue(switchstate & 0x3);
switchstate >>= 2; switchstate >>= 2;
ui->chkSH->setValue(switchstate & 0x3); ui->chkSH->setValue(switchstate & 0x3);
} }
else { else {
for (int i=0; pmsl[i]; i++) { for (int i = 0; pmsl[i]; i++) {
pmsl[i]->hide(); pmsl[i]->hide();
} }
for (int i=0; tpmsld[i]; i++) { for (int i = 0; tpmsld[i]; i++) {
tpmsld[i]->hide(); tpmsld[i]->hide();
} }
this->layout()->removeItem(ui->TaranisReadOnlyUnlock); this->layout()->removeItem(ui->TaranisReadOnlyUnlock);
} }
} }
else { else {
for (int i=0; pmsl[i]; i++) { for (int i = 0; pmsl[i]; i++) {
pmsl[i]->hide(); pmsl[i]->hide();
} }
for (int i=0; tpmsld[i]; i++) { for (int i = 0; tpmsld[i]; i++) {
tpmsld[i]->hide(); tpmsld[i]->hide();
} }
this->layout()->removeItem(ui->TaranisReadOnlyUnlock); this->layout()->removeItem(ui->TaranisReadOnlyUnlock);
@ -112,10 +112,10 @@ ui(new Ui::GeneralSetup)
ui->varioVolume_SL->setValue(generalSettings.varioVolume); ui->varioVolume_SL->setValue(generalSettings.varioVolume);
ui->bgVolume_SL->setValue(generalSettings.backgroundVolume); ui->bgVolume_SL->setValue(generalSettings.backgroundVolume);
ui->wavVolume_SL->setValue(generalSettings.wavVolume); ui->wavVolume_SL->setValue(generalSettings.wavVolume);
ui->varioP0_SB->setValue(700+(generalSettings.varioPitch*10)); ui->varioP0_SB->setValue(700 + (generalSettings.varioPitch * 10));
updateVarioPitchRange(); updateVarioPitchRange();
ui->varioPMax_SB->setValue(700+(generalSettings.varioPitch*10)+1000+(generalSettings.varioRange*10)); ui->varioPMax_SB->setValue(700 + (generalSettings.varioPitch * 10) + 1000 + (generalSettings.varioRange * 10));
ui->varioR0_SB->setValue(500+(generalSettings.varioRepeat*10)); ui->varioR0_SB->setValue(500 + (generalSettings.varioRepeat * 10));
} }
if (!firmware->getCapability(HasFAIMode)) { if (!firmware->getCapability(HasFAIMode)) {
@ -152,6 +152,14 @@ ui(new Ui::GeneralSetup)
ui->adjustRTC->hide(); ui->adjustRTC->hide();
} }
if (IS_STM32(firmware->getBoard())){
ui->usbModeCB->setCurrentIndex(generalSettings.usbMode);
}
else {
ui->usbModeLabel->hide();
ui->usbModeCB->hide();
}
if (!firmware->getCapability(OptrexDisplay)) { if (!firmware->getCapability(OptrexDisplay)) {
ui->label_displayType->hide(); ui->label_displayType->hide();
ui->displayTypeCB->setDisabled(true); ui->displayTypeCB->setDisabled(true);
@ -332,6 +340,14 @@ void GeneralSetupPanel::on_backlightswCB_currentIndexChanged(int index)
} }
} }
void GeneralSetupPanel::on_usbModeCB_currentIndexChanged(int index)
{
if (!lock) {
generalSettings.usbMode = ui->usbModeCB->currentIndex();
emit modified();
}
}
void GeneralSetupPanel::on_backlightColor_SL_valueChanged() void GeneralSetupPanel::on_backlightColor_SL_valueChanged()
{ {
if (!lock) { if (!lock) {

View file

@ -59,6 +59,7 @@ class GeneralSetupPanel : public GeneralPanel
void on_hapticmodeCB_currentIndexChanged(int index); void on_hapticmodeCB_currentIndexChanged(int index);
void on_hapticLengthCB_currentIndexChanged(int index); void on_hapticLengthCB_currentIndexChanged(int index);
void on_backlightswCB_currentIndexChanged(int index); void on_backlightswCB_currentIndexChanged(int index);
void on_usbModeCB_currentIndexChanged(int index);
void on_backlightColor_SL_valueChanged(); void on_backlightColor_SL_valueChanged();
void on_mavbaud_CB_currentIndexChanged(int index); void on_mavbaud_CB_currentIndexChanged(int index);
void on_voiceLang_CB_currentIndexChanged(int index); void on_voiceLang_CB_currentIndexChanged(int index);

File diff suppressed because it is too large Load diff

View file

@ -1184,6 +1184,7 @@ class GeneralSettings {
BeeperMode beeperMode; BeeperMode beeperMode;
bool disableAlarmWarning; bool disableAlarmWarning;
bool disableRssiPoweroffAlarm; bool disableRssiPoweroffAlarm;
unsigned int usbMode;
BeeperMode hapticMode; BeeperMode hapticMode;
unsigned int stickMode; // TODO enum unsigned int stickMode; // TODO enum
int timezone; int timezone;

View file

@ -897,7 +897,8 @@ PACK(struct TrainerData {
NOBACKUP(uint8_t imperial:1); \ NOBACKUP(uint8_t imperial:1); \
NOBACKUP(uint8_t jitterFilter:1); /* 0 - active */\ NOBACKUP(uint8_t jitterFilter:1); /* 0 - active */\
NOBACKUP(uint8_t disableRssiPoweroffAlarm:1); \ NOBACKUP(uint8_t disableRssiPoweroffAlarm:1); \
NOBACKUP(uint8_t spareExtraArm:5); \ NOBACKUP(uint8_t USBMode:2); \
NOBACKUP(uint8_t spareExtraArm:3); \
NOBACKUP(char ttsLanguage[2]); \ NOBACKUP(char ttsLanguage[2]); \
NOBACKUP(int8_t beepVolume:4); \ NOBACKUP(int8_t beepVolume:4); \
NOBACKUP(int8_t wavVolume:4); \ NOBACKUP(int8_t wavVolume:4); \

View file

@ -34,6 +34,8 @@
extern "C" { extern "C" {
#endif #endif
uint8_t serial2TracesEnabled();
#if defined(SIMU) #if defined(SIMU)
typedef void (*traceCallbackFunc)(const char * text); typedef void (*traceCallbackFunc)(const char * text);
extern traceCallbackFunc traceCallback; extern traceCallbackFunc traceCallback;
@ -41,14 +43,10 @@ extern "C" {
#elif defined(SEMIHOSTING) #elif defined(SEMIHOSTING)
#include <stdio.h> #include <stdio.h>
#define debugPrintf(...) printf(__VA_ARGS__) #define debugPrintf(...) printf(__VA_ARGS__)
#elif defined(DEBUG) && defined(CLI) && defined(USB_SERIAL)
#define debugPrintf(...) do { if (cliTracesEnabled) serialPrintf(__VA_ARGS__); } while(0)
#elif defined(DEBUG) && defined(CLI) #elif defined(DEBUG) && defined(CLI)
uint8_t serial2TracesEnabled(); #define debugPrintf(...) do { if (cliTracesEnabled) serialPrintf(__VA_ARGS__); } while(0)
#define debugPrintf(...) do { if (serial2TracesEnabled() && cliTracesEnabled) serialPrintf(__VA_ARGS__); } while(0) #elif defined(DEBUG) && defined(CPUARM) && defined(SERIAL2)
#elif defined(DEBUG) && defined(CPUARM) && !defined(PCBX7) #define debugPrintf(...) do { serialPrintf(__VA_ARGS__); } while(0)
uint8_t serial2TracesEnabled();
#define debugPrintf(...) do { if (serial2TracesEnabled()) serialPrintf(__VA_ARGS__); } while(0)
#else #else
#define debugPrintf(...) #define debugPrintf(...)
#endif #endif

View file

@ -107,6 +107,7 @@ enum MenuRadioSetupItems {
IF_FAI_CHOICE(ITEM_SETUP_FAI) IF_FAI_CHOICE(ITEM_SETUP_FAI)
CASE_MAVLINK(ITEM_MAVLINK_BAUD) CASE_MAVLINK(ITEM_MAVLINK_BAUD)
CASE_CPUARM(ITEM_SETUP_SWITCHES_DELAY) CASE_CPUARM(ITEM_SETUP_SWITCHES_DELAY)
CASE_STM32(ITEM_SETUP_USB_MODE)
ITEM_SETUP_RX_CHANNEL_ORD, ITEM_SETUP_RX_CHANNEL_ORD,
ITEM_SETUP_STICK_MODE_LABELS, ITEM_SETUP_STICK_MODE_LABELS,
ITEM_SETUP_STICK_MODE, ITEM_SETUP_STICK_MODE,
@ -141,7 +142,7 @@ void menuRadioSetup(event_t event)
} }
#endif #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) CASE_VOICE(0) CASE_CPUARM(0) CASE_CPUARM(0) CASE_CPUARM(0) 0, CASE_AUDIO(0) CASE_VARIO_CPUARM(LABEL(VARIO)) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(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, CASE_CPUARM(0) IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, CASE_CPUARM(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(0) CASE_CPUARM(0) CASE_GPS(0) CASE_PXX(0) CASE_CPUARM(0) CASE_CPUARM(0) IF_FAI_CHOICE(0) CASE_MAVLINK(0) CASE_CPUARM(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) CASE_VOICE(0) CASE_CPUARM(0) CASE_CPUARM(0) CASE_CPUARM(0) 0, CASE_AUDIO(0) CASE_VARIO_CPUARM(LABEL(VARIO)) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(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, CASE_CPUARM(0) IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, CASE_CPUARM(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(0) CASE_CPUARM(0) CASE_GPS(0) CASE_PXX(0) CASE_CPUARM(0) CASE_CPUARM(0) IF_FAI_CHOICE(0) CASE_MAVLINK(0) CASE_STM32(0) 0, COL_TX_MODE, 0, 1/*to force edit mode*/});
if (event == EVT_ENTRY) { if (event == EVT_ENTRY) {
reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode; reusableBuffer.generalSettings.stickMode = g_eeGeneral.stickMode;
@ -564,7 +565,11 @@ void menuRadioSetup(event_t event)
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.switchesDelay, -15, 100-15); if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.switchesDelay, -15, 100-15);
break; break;
#endif #endif
#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
case ITEM_SETUP_RX_CHANNEL_ORD: case ITEM_SETUP_RX_CHANNEL_ORD:
lcdDrawTextAlignedLeft(y, STR_RXCHANNELORD); // RAET->AETR lcdDrawTextAlignedLeft(y, STR_RXCHANNELORD); // RAET->AETR
for (uint8_t i=1; i<=4; i++) { for (uint8_t i=1; i<=4; i++) {

View file

@ -88,6 +88,7 @@ enum MenuRadioSetupItems {
IF_FAI_CHOICE(ITEM_SETUP_FAI) IF_FAI_CHOICE(ITEM_SETUP_FAI)
CASE_MAVLINK(ITEM_MAVLINK_BAUD) CASE_MAVLINK(ITEM_MAVLINK_BAUD)
ITEM_SETUP_SWITCHES_DELAY, ITEM_SETUP_SWITCHES_DELAY,
ITEM_SETUP_USB_MODE,
ITEM_SETUP_RX_CHANNEL_ORD, ITEM_SETUP_RX_CHANNEL_ORD,
ITEM_SETUP_STICK_MODE_LABELS, ITEM_SETUP_STICK_MODE_LABELS,
ITEM_SETUP_STICK_MODE, ITEM_SETUP_STICK_MODE,
@ -478,6 +479,10 @@ void menuRadioSetup(event_t event)
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.switchesDelay, -15, 100-15); if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.switchesDelay, -15, 100-15);
break; break;
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;
case ITEM_SETUP_RX_CHANNEL_ORD: case ITEM_SETUP_RX_CHANNEL_ORD:
lcdDrawTextAlignedLeft(y, STR_RXCHANNELORD); // RAET->AETR lcdDrawTextAlignedLeft(y, STR_RXCHANNELORD); // RAET->AETR
for (uint8_t i=1; i<=4; i++) { for (uint8_t i=1; i<=4; i++) {

View file

@ -92,13 +92,6 @@ void menuStatisticsView(event_t event)
#define MENU_DEBUG_Y_USB (5*FH) #define MENU_DEBUG_Y_USB (5*FH)
#define MENU_DEBUG_Y_RTOS (6*FH) #define MENU_DEBUG_Y_RTOS (6*FH)
#if defined(USB_SERIAL)
extern uint16_t usbWraps;
extern uint16_t charsWritten;
extern "C" volatile uint32_t APP_Rx_ptr_in;
extern "C" volatile uint32_t APP_Rx_ptr_out;
#endif
void menuStatisticsDebug(event_t event) void menuStatisticsDebug(event_t event)
{ {
TITLE(STR_MENUDEBUG); TITLE(STR_MENUDEBUG);

View file

@ -76,6 +76,7 @@ enum menuRadioSetupItems {
IF_FAI_CHOICE(ITEM_SETUP_FAI) IF_FAI_CHOICE(ITEM_SETUP_FAI)
// CASE_MAVLINK(ITEM_MAVLINK_BAUD) // CASE_MAVLINK(ITEM_MAVLINK_BAUD)
ITEM_SETUP_SWITCHES_DELAY, ITEM_SETUP_SWITCHES_DELAY,
ITEM_SETUP_USB_MODE,
ITEM_SETUP_RX_CHANNEL_ORD, ITEM_SETUP_RX_CHANNEL_ORD,
ITEM_SETUP_STICK_MODE, ITEM_SETUP_STICK_MODE,
ITEM_SETUP_MAX ITEM_SETUP_MAX
@ -460,6 +461,11 @@ bool menuRadioSetup(event_t event)
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.switchesDelay, -15, 100-15); if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.switchesDelay, -15, 100-15);
break; break;
case ITEM_SETUP_USB_MODE:
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_USBMODE);
g_eeGeneral.USBMode = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_USBMODES, g_eeGeneral.USBMode, USB_UNSELECTED_MODE, USB_MAX_MODE, attr, event);
break;
case ITEM_SETUP_RX_CHANNEL_ORD: case ITEM_SETUP_RX_CHANNEL_ORD:
{ {
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_RXCHANNELORD); // RAET->AETR lcdDrawText(MENUS_MARGIN_LEFT, y, STR_RXCHANNELORD); // RAET->AETR

View file

@ -2,7 +2,7 @@
* Copyright (C) OpenTX * Copyright (C) OpenTX
* *
* Based on code named * Based on code named
* th9x - http://code.google.com/p/th9x * th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x * er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x * gruvin9x - http://code.google.com/p/gruvin9x
* *

View file

@ -24,20 +24,49 @@ uint8_t currentSpeakerVolume = 255;
uint8_t requiredSpeakerVolume = 255; uint8_t requiredSpeakerVolume = 255;
uint8_t mainRequestFlags = 0; uint8_t mainRequestFlags = 0;
#if defined(STM32)
void onUSBConnectMenu(const char *result)
{
if (result == STR_USB_MASS_STORAGE) {
setSelectedUsbMode(USB_MASS_STORAGE_MODE);
}
else if (result == STR_USB_JOYSTICK) {
setSelectedUsbMode(USB_JOYSTICK_MODE);
}
else if (result == STR_USB_SERIAL) {
setSelectedUsbMode(USB_SERIAL_MODE);
}
}
#endif
void handleUsbConnection() void handleUsbConnection()
{ {
#if defined(STM32) && !defined(SIMU) #if defined(STM32) && !defined(SIMU)
if (!usbStarted() && usbPlugged()) { if (!usbStarted() && usbPlugged() && !(getSelectedUsbMode() == USB_UNSELECTED_MODE)) {
usbStart(); usbStart();
#if defined(USB_MASS_STORAGE) if (getSelectedUsbMode() == USB_MASS_STORAGE_MODE) {
opentxClose(false); opentxClose(false);
usbPluggedIn(); usbPluggedIn();
#endif }
}
if (!usbStarted() && usbPlugged() && getSelectedUsbMode() == USB_UNSELECTED_MODE) {
if((g_eeGeneral.USBMode == 0) && (popupMenuNoItems == 0)) {
POPUP_MENU_ADD_ITEM(STR_USB_JOYSTICK);
POPUP_MENU_ADD_ITEM(STR_USB_MASS_STORAGE);
POPUP_MENU_ADD_ITEM(STR_USB_SERIAL);
POPUP_MENU_START(onUSBConnectMenu);
}
if (g_eeGeneral.USBMode != USB_UNSELECTED_MODE) {
setSelectedUsbMode(g_eeGeneral.USBMode);
}
} }
if (usbStarted() && !usbPlugged()) { if (usbStarted() && !usbPlugged()) {
usbStop(); usbStop();
#if defined(USB_MASS_STORAGE) && !defined(EEPROM) if (getSelectedUsbMode() == USB_MASS_STORAGE_MODE) {
opentxResume(); opentxResume();
}
#if !defined(BOOT)
setSelectedUsbMode(USB_UNSELECTED_MODE);
#endif #endif
} }
#endif // defined(STM32) && !defined(SIMU) #endif // defined(STM32) && !defined(SIMU)
@ -402,12 +431,10 @@ void perMain()
return; return;
} }
#endif #endif
#if defined(PCBHORUS) #if defined(STM32)
// TODO if it is OK on HORUS it could be ported to all other boards static bool sdcard_present_before = SD_CARD_PRESENT();
// But in this case it's needed to define sdMount for all boards, because sdInit also initializes the SD mutex bool sdcard_present_now = SD_CARD_PRESENT();
static uint32_t sdcard_present_before = SD_CARD_PRESENT();
uint32_t sdcard_present_now = SD_CARD_PRESENT();
if (sdcard_present_now && !sdcard_present_before) { if (sdcard_present_now && !sdcard_present_before) {
sdMount(); sdMount();
} }
@ -421,9 +448,9 @@ void perMain()
return; return;
} }
#endif #endif
#if defined(USB_MASS_STORAGE) #if defined(USB_MASS_STORAGE)
if (usbPlugged()) { if (usbPlugged() && getSelectedUsbMode() == USB_MASS_STORAGE_MODE) {
// disable access to menus // disable access to menus
lcdClear(); lcdClear();
menuMainView(0); menuMainView(0);
@ -459,4 +486,3 @@ void perMain()
gpsWakeup(); gpsWakeup();
#endif #endif
} }

View file

@ -1996,9 +1996,7 @@ void opentxResume()
menuHandlers[0] = menuMainView; menuHandlers[0] = menuMainView;
sdMount(); sdMount();
storageReadAll(); storageReadAll();
#if defined(PCBHORUS) #if defined(PCBHORUS)
loadTheme(); loadTheme();
loadFontCache(); loadFontCache();

View file

@ -50,6 +50,12 @@
#define IF_CPUARM(x) #define IF_CPUARM(x)
#endif #endif
#if defined(STM32)
#define CASE_STM32(x) x,
#else
#define CASE_STM32(x)
#endif
#if defined(VARIO) && defined(CPUARM) #if defined(VARIO) && defined(CPUARM)
#define CASE_VARIO_CPUARM(x) x, #define CASE_VARIO_CPUARM(x) x,
#else #else

View file

@ -2,7 +2,7 @@
* Copyright (C) OpenTX * Copyright (C) OpenTX
* *
* Based on code named * Based on code named
* th9x - http://code.google.com/p/th9x * th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x * er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x * gruvin9x - http://code.google.com/p/gruvin9x
* *
@ -25,12 +25,12 @@
#define PRINTF_BUFFER_SIZE 128 #define PRINTF_BUFFER_SIZE 128
void serialPutc(char c) void serialPutc(char c) {
{ if (getSelectedUsbMode() == USB_SERIAL_MODE)
#if defined(USB_SERIAL) usbSerialPutc(c);
usbSerialPutc(c); #if defined(SERIAL2)
#elif defined(SERIAL2) if (serial2TracesEnabled())
serial2Putc(c); serial2Putc(c);
#endif #endif
} }

View file

@ -1,8 +1,6 @@
set(LUA "NO" CACHE STRING "Lua scripts (YES/NO/NO_MODEL_SCRIPTS)") set(LUA "NO" CACHE STRING "Lua scripts (YES/NO/NO_MODEL_SCRIPTS)")
set_property(CACHE LUA PROPERTY STRINGS YES NO NO_MODEL_SCRIPTS) set_property(CACHE LUA PROPERTY STRINGS YES NO NO_MODEL_SCRIPTS)
set(LUA_SCRIPT_LOAD_MODE "" CACHE STRING "Script loading mode and compilation flags [btTxcd] (see loadScript() API docs). Blank for default ('bt' on radio, 'T' on SIMU/DEBUG builds)") set(LUA_SCRIPT_LOAD_MODE "" CACHE STRING "Script loading mode and compilation flags [btTxcd] (see loadScript() API docs). Blank for default ('bt' on radio, 'T' on SIMU/DEBUG builds)")
set(USB "JOYSTICK" CACHE STRING "USB option (JOYSTICK/MASSSTORAGE/SERIAL)")
set_property(CACHE USB PROPERTY STRINGS JOYSTICK MASSSTORAGE SERIAL)
option(LUA_COMPILER "Pre-compile and save Lua scripts" OFF) option(LUA_COMPILER "Pre-compile and save Lua scripts" OFF)
set(ARCH ARM) set(ARCH ARM)
@ -38,36 +36,32 @@ set(FIRMWARE_TARGET_SRC
../common/arm/stm32/usbd_usr.cpp ../common/arm/stm32/usbd_usr.cpp
../common/arm/stm32/usb_driver.cpp ../common/arm/stm32/usb_driver.cpp
) )
if(USB STREQUAL SERIAL) add_definitions(-DUSB_SERIAL)
add_definitions(-DUSB_SERIAL) set(FIRMWARE_TARGET_SRC
set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC}
${FIRMWARE_TARGET_SRC} ../common/arm/stm32/usbd_cdc.cpp
../common/arm/stm32/usbd_cdc.cpp )
) set(STM32USB_SRC
set(STM32USB_SRC ${STM32USB_SRC}
${STM32USB_SRC} STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c
STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c )
) add_definitions(-DUSB_MASS_STORAGE)
elseif(USB STREQUAL MASSSTORAGE) set(STM32USB_SRC
add_definitions(-DUSB_MASS_STORAGE) ${STM32USB_SRC}
set(STM32USB_SRC STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c
${STM32USB_SRC} STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c
STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c
STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c
STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c )
STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c set(FIRMWARE_TARGET_SRC
) ${FIRMWARE_TARGET_SRC}
set(FIRMWARE_TARGET_SRC ../common/arm/stm32/usbd_storage_msd.cpp
${FIRMWARE_TARGET_SRC} )
../common/arm/stm32/usbd_storage_msd.cpp add_definitions(-DUSB_JOYSTICK)
) set(FIRMWARE_TARGET_SRC
else() ${FIRMWARE_TARGET_SRC}
add_definitions(-DUSB_JOYSTICK) ../common/arm/stm32/usbd_hid_joystick.c
set(FIRMWARE_TARGET_SRC )
${FIRMWARE_TARGET_SRC}
../common/arm/stm32/usbd_hid_joystick.c
)
endif()
if(GVARS) if(GVARS)
set(GUI_SRC set(GUI_SRC
${GUI_SRC} ${GUI_SRC}

View file

@ -91,7 +91,7 @@ void serial2Init(unsigned int mode, unsigned int protocol)
case UART_MODE_TELEMETRY_MIRROR: case UART_MODE_TELEMETRY_MIRROR:
uart3Setup(FRSKY_SPORT_BAUDRATE, false); uart3Setup(FRSKY_SPORT_BAUDRATE, false);
break; break;
#if !defined(USB_SERIAL) && (defined(DEBUG) || defined(CLI)) #if defined(DEBUG) || defined(CLI)
case UART_MODE_DEBUG: case UART_MODE_DEBUG:
uart3Setup(DEBUG_BAUDRATE, false); uart3Setup(DEBUG_BAUDRATE, false);
break; break;
@ -153,19 +153,21 @@ extern "C" void SERIAL_USART_IRQHandler(void)
} }
} }
#if !defined(USB_SERIAL) && defined(CLI) #if defined(CLI)
// Receive if (!(getSelectedUsbMode() == USB_SERIAL_MODE)) {
uint32_t status = SERIAL_USART->SR; // Receive
while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { uint32_t status = SERIAL_USART->SR;
uint8_t data = SERIAL_USART->DR; while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) {
if (!(status & USART_FLAG_ERRORS)) { uint8_t data = SERIAL_USART->DR;
switch (serial2Mode) { if (!(status & USART_FLAG_ERRORS)) {
case UART_MODE_DEBUG: switch (serial2Mode) {
cliRxFifo.push(data); case UART_MODE_DEBUG:
break; cliRxFifo.push(data);
break;
}
} }
status = SERIAL_USART->SR;
} }
status = SERIAL_USART->SR;
} }
#endif #endif
} }

View file

@ -2,7 +2,7 @@
* Copyright (C) OpenTX * Copyright (C) OpenTX
* *
* Based on code named * Based on code named
* th9x - http://code.google.com/p/th9x * th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x * er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x * gruvin9x - http://code.google.com/p/gruvin9x
* *
@ -31,6 +31,21 @@ extern "C" {
#include "debug.h" #include "debug.h"
static bool usbDriverStarted = false; static bool usbDriverStarted = false;
#if defined(BOOT)
static usbMode selectedUsbMode = USB_MASS_STORAGE_MODE;
#else
static usbMode selectedUsbMode = USB_UNSELECTED_MODE;
#endif
int getSelectedUsbMode()
{
return selectedUsbMode;
}
void setSelectedUsbMode(int mode)
{
selectedUsbMode = usbMode (mode);
}
int usbPlugged() int usbPlugged()
{ {
@ -70,16 +85,23 @@ void usbInit()
void usbStart() void usbStart()
{ {
#if defined(USB_JOYSTICK) switch (getSelectedUsbMode()) {
// initialize USB as HID device #if !defined(BOOT)
USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_HID_cb, &USR_cb); case USB_JOYSTICK_MODE:
#elif defined(USB_SERIAL) // initialize USB as HID device
// initialize USB as CDC device (virtual serial port) USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_HID_cb, &USR_cb);
USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_CDC_cb, &USR_cb); break;
#elif defined(USB_MASS_STORAGE) case USB_SERIAL_MODE:
// initialize USB as MSC device // initialize USB as CDC device (virtual serial port)
USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_MSC_cb, &USR_cb); USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_CDC_cb, &USR_cb);
break;
#endif #endif
default:
case USB_MASS_STORAGE_MODE:
// initialize USB as MSC device
USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_MSC_cb, &USR_cb);
break;
}
usbDriverStarted = true; usbDriverStarted = true;
} }
@ -89,7 +111,7 @@ void usbStop()
USBD_DeInit(&USB_OTG_dev); USBD_DeInit(&USB_OTG_dev);
} }
uint8_t usbStarted() bool usbStarted()
{ {
return usbDriverStarted; return usbDriverStarted;
} }

View file

@ -0,0 +1,51 @@
/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef OPENTX_USB_DRIVER_H
#define OPENTX_USB_DRIVER_H
// USB driver
enum usbMode {
USB_UNSELECTED_MODE,
USB_JOYSTICK_MODE,
USB_SERIAL_MODE,
USB_MASS_STORAGE_MODE,
USB_MAX_MODE=USB_MASS_STORAGE_MODE
};
int usbPlugged();
void usbInit();
void usbStart();
void usbStop();
bool usbStarted();
int getSelectedUsbMode();
void setSelectedUsbMode(int mode);
void usbSerialPutc(uint8_t c);
// Used in view_statistics.cpp
#if defined(USB_SERIAL)
extern uint16_t usbWraps;
extern uint16_t charsWritten;
extern volatile uint32_t APP_Rx_ptr_in;
extern volatile uint32_t APP_Rx_ptr_out;
#endif
#endif

View file

@ -2,7 +2,7 @@
* Copyright (C) OpenTX * Copyright (C) OpenTX
* *
* Based on code named * Based on code named
* th9x - http://code.google.com/p/th9x * th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x * er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x * gruvin9x - http://code.google.com/p/gruvin9x
* *
@ -27,7 +27,7 @@
#define USBD_CFG_MAX_NUM 1 #define USBD_CFG_MAX_NUM 1
#define USBD_ITF_MAX_NUM 1 #define USBD_ITF_MAX_NUM 1
#define USB_MAX_STR_DESC_SIZ 64 #define USB_MAX_STR_DESC_SIZ 64
#define USBD_SELF_POWERED #define USBD_SELF_POWERED
@ -61,4 +61,3 @@
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

View file

@ -2,7 +2,7 @@
* Copyright (C) OpenTX * Copyright (C) OpenTX
* *
* Based on code named * Based on code named
* th9x - http://code.google.com/p/th9x * th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x * er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x * gruvin9x - http://code.google.com/p/gruvin9x
* *
@ -29,27 +29,30 @@
#include "usbd_req.h" #include "usbd_req.h"
#include "usb_regs.h" #include "usb_regs.h"
#include "usb_driver.h"
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{ * @{
*/ */
/** @defgroup USBD_DESC /** @defgroup USBD_DESC
* @brief USBD descriptors module * @brief USBD descriptors module
* @{ * @{
*/ */
/** @defgroup USBD_DESC_Private_TypesDefinitions /** @defgroup USBD_DESC_Private_TypesDefinitions
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_DESC_Private_Defines /** @defgroup USBD_DESC_Private_Defines
* @{ * @{
*/ */
#define USBD_VID 0x0483 #define USBD_VID 0x0483
@ -59,31 +62,29 @@
#if defined(BOOT) #if defined(BOOT)
#define USBD_PID 0x5720 #define USBD_MSC_PRODUCT_FS_STRING USB_NAME " Bootloader"
#define USBD_PRODUCT_FS_STRING USB_NAME " Bootloader" #else
#define USBD_CONFIGURATION_FS_STRING "MSC Config" #define USBD_MSC_PRODUCT_FS_STRING USB_NAME " Mass Storage"
#define USBD_INTERFACE_FS_STRING "MSC Interface"
#elif defined(USB_JOYSTICK)
#define USBD_PID 0x5710
#define USBD_PRODUCT_FS_STRING USB_NAME " Joystick"
#define USBD_CONFIGURATION_FS_STRING "HID Config"
#define USBD_INTERFACE_FS_STRING "HID Interface"
#elif defined(USB_SERIAL)
#define USBD_PID 0x5740 // do not change, this ID is used by the ST USB driver for Windows
#define USBD_PRODUCT_FS_STRING USB_NAME " Serial Port"
#define USBD_CONFIGURATION_FS_STRING "VSP Config"
#define USBD_INTERFACE_FS_STRING "VSP Interface"
#elif defined(USB_MASS_STORAGE)
#define USBD_PID 0x5720
#define USBD_PRODUCT_FS_STRING USB_NAME " Mass Storage"
#define USBD_CONFIGURATION_FS_STRING "MSC Config"
#define USBD_INTERFACE_FS_STRING "MSC Interface"
#endif #endif
#define USBD_MSC_PID 0x5720
#define USBD_MSC_CONFIGURATION_FS_STRING "MSC Config"
#define USBD_MSC_INTERFACE_FS_STRING "MSC Interface"
#define USBD_HID_PID 0x5710
#define USBD_HID_PRODUCT_FS_STRING USB_NAME " Joystick"
#define USBD_HID_CONFIGURATION_FS_STRING "HID Config"
#define USBD_HID_INTERFACE_FS_STRING "HID Interface"
#define USBD_CDC_PID 0x5740 // do not change, this ID is used by the ST USB driver for Windows
#define USBD_CDC_PRODUCT_FS_STRING USB_NAME " Serial Port"
#define USBD_CDC_CONFIGURATION_FS_STRING "VSP Config"
#define USBD_CDC_INTERFACE_FS_STRING "VSP Interface"
const USBD_DEVICE USR_desc = const USBD_DEVICE USR_desc =
{ {
USBD_USR_DeviceDescriptor, USBD_USR_DeviceDescriptor,
USBD_USR_LangIDStrDescriptor, USBD_USR_LangIDStrDescriptor,
USBD_USR_ManufacturerStrDescriptor, USBD_USR_ManufacturerStrDescriptor,
USBD_USR_ProductStrDescriptor, USBD_USR_ProductStrDescriptor,
USBD_USR_SerialStrDescriptor, USBD_USR_SerialStrDescriptor,
@ -91,28 +92,6 @@ const USBD_DEVICE USR_desc =
USBD_USR_InterfaceStrDescriptor, USBD_USR_InterfaceStrDescriptor,
}; };
/* USB Standard Device Descriptor */
__ALIGN_BEGIN const uint8_t USBD_DeviceDesc[USB_SIZ_DEVICE_DESC] __ALIGN_END =
{
USB_SIZ_DEVICE_DESC, /*bLength */
USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
0x00, /*bcdUSB */
0x02,
0x00, /*bDeviceClass*/
0x00, /*bDeviceSubClass*/
0x00, /*bDeviceProtocol*/
USB_OTG_MAX_EP0_SIZE, /*bMaxPacketSize*/
LOBYTE(USBD_VID), /*idVendor*/
HIBYTE(USBD_VID), /*idVendor*/
LOBYTE(USBD_PID), /*idVendor*/
HIBYTE(USBD_PID), /*idVendor*/
0x00, /*bcdDevice rel. 2.00*/
0x02,
USBD_IDX_MFC_STR, /*Index of manufacturer string*/
USBD_IDX_PRODUCT_STR, /*Index of product string*/
USBD_IDX_SERIAL_STR, /*Index of serial number string*/
USBD_CFG_MAX_NUM /*bNumConfigurations*/
}; /* USB_DeviceDescriptor */
/* USB Standard Device Descriptor */ /* USB Standard Device Descriptor */
__ALIGN_BEGIN const uint8_t USBD_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END = __ALIGN_BEGIN const uint8_t USBD_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END =
@ -132,16 +111,16 @@ __ALIGN_BEGIN const uint8_t USBD_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC]
/* USB Standard Device Descriptor */ /* USB Standard Device Descriptor */
__ALIGN_BEGIN const uint8_t USBD_LangIDDesc[USB_SIZ_STRING_LANGID] __ALIGN_END = __ALIGN_BEGIN const uint8_t USBD_LangIDDesc[USB_SIZ_STRING_LANGID] __ALIGN_END =
{ {
USB_SIZ_STRING_LANGID, USB_SIZ_STRING_LANGID,
USB_DESC_TYPE_STRING, USB_DESC_TYPE_STRING,
LOBYTE(USBD_LANGID_STRING), LOBYTE(USBD_LANGID_STRING),
HIBYTE(USBD_LANGID_STRING), HIBYTE(USBD_LANGID_STRING),
}; };
__ALIGN_BEGIN uint8_t USBD_StrDesc[USB_MAX_STR_DESC_SIZ] __ALIGN_END ; // modified by OpenTX __ALIGN_BEGIN uint8_t USBD_StrDesc[USB_MAX_STR_DESC_SIZ] __ALIGN_END ; // modified by OpenTX
/* /*
* @brief USBD_USR_DeviceDescriptor * @brief USBD_USR_DeviceDescriptor
* return the device descriptor * return the device descriptor
* @param speed : current device speed * @param speed : current device speed
* @param length : pointer to data length variable * @param length : pointer to data length variable
@ -149,13 +128,50 @@ __ALIGN_BEGIN uint8_t USBD_StrDesc[USB_MAX_STR_DESC_SIZ] __ALIGN_END ; // modifi
*/ */
uint8_t * USBD_USR_DeviceDescriptor( uint8_t speed , uint16_t *length) uint8_t * USBD_USR_DeviceDescriptor( uint8_t speed , uint16_t *length)
{ {
int pid=0;
switch (getSelectedUsbMode()) {
case USB_JOYSTICK_MODE:
pid = USBD_HID_PID;
break;
case USB_SERIAL_MODE:
pid = USBD_CDC_PID;
break;
case USB_MASS_STORAGE_MODE:
pid = USBD_MSC_PID;
break;
}
/* USB Standard Device Descriptor */
__ALIGN_BEGIN const uint8_t USBD_DeviceDesc[USB_SIZ_DEVICE_DESC] __ALIGN_END =
{
USB_SIZ_DEVICE_DESC, /*bLength */
USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
0x00, /*bcdUSB */
0x02,
0x00, /*bDeviceClass*/
0x00, /*bDeviceSubClass*/
0x00, /*bDeviceProtocol*/
USB_OTG_MAX_EP0_SIZE, /*bMaxPacketSize*/
LOBYTE(USBD_VID), /*idVendor*/
HIBYTE(USBD_VID), /*idVendor*/
LOBYTE(pid), /*idVendor*/
HIBYTE(pid), /*idVendor*/
0x00, /*bcdDevice rel. 2.00*/
0x02,
USBD_IDX_MFC_STR, /*Index of manufacturer string*/
USBD_IDX_PRODUCT_STR, /*Index of product string*/
USBD_IDX_SERIAL_STR, /*Index of serial number string*/
USBD_CFG_MAX_NUM /*bNumConfigurations*/
}; /* USB_DeviceDescriptor */
*length = sizeof(USBD_DeviceDesc); *length = sizeof(USBD_DeviceDesc);
memcpy(USBD_StrDesc, USBD_DeviceDesc, *length); memcpy(USBD_StrDesc, USBD_DeviceDesc, *length);
return USBD_StrDesc; return USBD_StrDesc;
} }
/** /**
* @brief USBD_USR_LangIDStrDescriptor * @brief USBD_USR_LangIDStrDescriptor
* return the LangID string descriptor * return the LangID string descriptor
* @param speed : current device speed * @param speed : current device speed
* @param length : pointer to data length variable * @param length : pointer to data length variable
@ -163,14 +179,14 @@ uint8_t * USBD_USR_DeviceDescriptor( uint8_t speed , uint16_t *length)
*/ */
uint8_t * USBD_USR_LangIDStrDescriptor( uint8_t speed , uint16_t *length) uint8_t * USBD_USR_LangIDStrDescriptor( uint8_t speed , uint16_t *length)
{ {
*length = sizeof(USBD_LangIDDesc); *length = sizeof(USBD_LangIDDesc);
memcpy(USBD_StrDesc, USBD_LangIDDesc, *length); memcpy(USBD_StrDesc, USBD_LangIDDesc, *length);
return USBD_StrDesc; return USBD_StrDesc;
} }
/** /**
* @brief USBD_USR_ProductStrDescriptor * @brief USBD_USR_ProductStrDescriptor
* return the product string descriptor * return the product string descriptor
* @param speed : current device speed * @param speed : current device speed
* @param length : pointer to data length variable * @param length : pointer to data length variable
@ -178,12 +194,23 @@ uint8_t * USBD_USR_LangIDStrDescriptor( uint8_t speed , uint16_t *length)
*/ */
uint8_t * USBD_USR_ProductStrDescriptor( uint8_t speed , uint16_t *length) uint8_t * USBD_USR_ProductStrDescriptor( uint8_t speed , uint16_t *length)
{ {
USBD_GetString ((uint8_t*)USBD_PRODUCT_FS_STRING, USBD_StrDesc, length); switch (getSelectedUsbMode()) {
case USB_JOYSTICK_MODE:
USBD_GetString ((uint8_t*)USBD_HID_PRODUCT_FS_STRING, USBD_StrDesc, length);
break;
case USB_SERIAL_MODE:
USBD_GetString ((uint8_t*)USBD_CDC_PRODUCT_FS_STRING, USBD_StrDesc, length);
break;
case USB_MASS_STORAGE_MODE:
USBD_GetString ((uint8_t*)USBD_MSC_PRODUCT_FS_STRING, USBD_StrDesc, length);
break;
}
return USBD_StrDesc; return USBD_StrDesc;
} }
/** /**
* @brief USBD_USR_ManufacturerStrDescriptor * @brief USBD_USR_ManufacturerStrDescriptor
* return the manufacturer string descriptor * return the manufacturer string descriptor
* @param speed : current device speed * @param speed : current device speed
* @param length : pointer to data length variable * @param length : pointer to data length variable
@ -196,7 +223,7 @@ uint8_t * USBD_USR_ManufacturerStrDescriptor( uint8_t speed , uint16_t *length)
} }
/** /**
* @brief USBD_USR_SerialStrDescriptor * @brief USBD_USR_SerialStrDescriptor
* return the serial number string descriptor * return the serial number string descriptor
* @param speed : current device speed * @param speed : current device speed
* @param length : pointer to data length variable * @param length : pointer to data length variable
@ -209,7 +236,7 @@ uint8_t * USBD_USR_SerialStrDescriptor( uint8_t speed , uint16_t *length)
} }
/** /**
* @brief USBD_USR_ConfigStrDescriptor * @brief USBD_USR_ConfigStrDescriptor
* return the configuration string descriptor * return the configuration string descriptor
* @param speed : current device speed * @param speed : current device speed
* @param length : pointer to data length variable * @param length : pointer to data length variable
@ -217,13 +244,23 @@ uint8_t * USBD_USR_SerialStrDescriptor( uint8_t speed , uint16_t *length)
*/ */
uint8_t * USBD_USR_ConfigStrDescriptor( uint8_t speed , uint16_t *length) uint8_t * USBD_USR_ConfigStrDescriptor( uint8_t speed , uint16_t *length)
{ {
USBD_GetString ((uint8_t *)USBD_CONFIGURATION_FS_STRING, USBD_StrDesc, length); switch (getSelectedUsbMode()) {
return USBD_StrDesc; case USB_JOYSTICK_MODE:
USBD_GetString ((uint8_t*)USBD_HID_CONFIGURATION_FS_STRING, USBD_StrDesc, length);
break;
case USB_SERIAL_MODE:
USBD_GetString ((uint8_t*)USBD_CDC_CONFIGURATION_FS_STRING, USBD_StrDesc, length);
break;
case USB_MASS_STORAGE_MODE:
USBD_GetString ((uint8_t*)USBD_MSC_CONFIGURATION_FS_STRING, USBD_StrDesc, length);
break;
}
return USBD_StrDesc;
} }
/** /**
* @brief USBD_USR_InterfaceStrDescriptor * @brief USBD_USR_InterfaceStrDescriptor
* return the interface string descriptor * return the interface string descriptor
* @param speed : current device speed * @param speed : current device speed
* @param length : pointer to data length variable * @param length : pointer to data length variable
@ -231,9 +268,18 @@ uint8_t * USBD_USR_ConfigStrDescriptor( uint8_t speed , uint16_t *length)
*/ */
uint8_t * USBD_USR_InterfaceStrDescriptor( uint8_t speed , uint16_t *length) uint8_t * USBD_USR_InterfaceStrDescriptor( uint8_t speed , uint16_t *length)
{ {
USBD_GetString ((uint8_t*)USBD_INTERFACE_FS_STRING, USBD_StrDesc, length); switch (getSelectedUsbMode()) {
return USBD_StrDesc; case USB_JOYSTICK_MODE:
USBD_GetString ((uint8_t*)USBD_HID_INTERFACE_FS_STRING, USBD_StrDesc, length);
break;
case USB_SERIAL_MODE:
USBD_GetString ((uint8_t*)USBD_CDC_INTERFACE_FS_STRING, USBD_StrDesc, length);
break;
case USB_MASS_STORAGE_MODE:
USBD_GetString ((uint8_t*)USBD_MSC_INTERFACE_FS_STRING, USBD_StrDesc, length);
break;
}
return USBD_StrDesc;
} }
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

View file

@ -2,7 +2,7 @@
* Copyright (C) OpenTX * Copyright (C) OpenTX
* *
* Based on code named * Based on code named
* th9x - http://code.google.com/p/th9x * th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x * er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x * gruvin9x - http://code.google.com/p/gruvin9x
* *
@ -35,9 +35,9 @@ const USBD_Usr_cb_TypeDef USR_cb =
USBD_USR_DeviceConfigured, USBD_USR_DeviceConfigured,
USBD_USR_DeviceSuspended, USBD_USR_DeviceSuspended,
USBD_USR_DeviceResumed, USBD_USR_DeviceResumed,
USBD_USR_DeviceConnected, USBD_USR_DeviceConnected,
USBD_USR_DeviceDisconnected, USBD_USR_DeviceDisconnected,
}; };
} }
@ -69,10 +69,10 @@ void USBD_USR_DeviceReset (uint8_t speed)
*/ */
void USBD_USR_DeviceConfigured (void) void USBD_USR_DeviceConfigured (void)
{ {
} }
/** /**
* @brief Displays the message on LCD on device suspend event * @brief Displays the message on LCD on device suspend event
* @param None * @param None
* @retval None * @retval None
*/ */
@ -112,9 +112,10 @@ void USBD_USR_DeviceConnected (void)
*/ */
void USBD_USR_DeviceDisconnected (void) void USBD_USR_DeviceDisconnected (void)
{ {
#if !defined(BOOT) && defined(USB_MASS_STORAGE) && defined(EEPROM) #if !defined(BOOT) && defined(EEPROM)
// TODO is it really needed if we didn't write the EEPROM? // TODO is it really needed if we didn't write the EEPROM?
NVIC_SystemReset(); // if (getSelectedUsbMode() == USB_MASS_STORAGE_MODE)
// NVIC_SystemReset();
#endif #endif
} }

View file

@ -22,6 +22,7 @@
#define _BOARD_HORUS_H_ #define _BOARD_HORUS_H_
#include "stddef.h" #include "stddef.h"
#include "stdbool.h"
#if defined(__cplusplus) && !defined(SIMU) #if defined(__cplusplus) && !defined(SIMU)
extern "C" { extern "C" {
@ -62,6 +63,7 @@ extern "C" {
#pragma clang diagnostic pop #pragma clang diagnostic pop
#endif #endif
#include "usb_driver.h"
#if !defined(SIMU) #if !defined(SIMU)
#include "usbd_cdc_core.h" #include "usbd_cdc_core.h"
@ -218,7 +220,7 @@ enum EnumKeys
KEY_RIGHT = KEY_TELEM, KEY_RIGHT = KEY_TELEM,
KEY_RADIO, KEY_RADIO,
KEY_LEFT = KEY_RADIO, KEY_LEFT = KEY_RADIO,
TRM_BASE, TRM_BASE,
TRM_LH_DWN = TRM_BASE, TRM_LH_DWN = TRM_BASE,
TRM_LH_UP, TRM_LH_UP,
@ -233,7 +235,7 @@ enum EnumKeys
TRM_RS_DWN, TRM_RS_DWN,
TRM_RS_UP, TRM_RS_UP,
TRM_LAST = TRM_RS_UP, TRM_LAST = TRM_RS_UP,
NUM_KEYS NUM_KEYS
}; };
@ -447,14 +449,7 @@ void backlightEnable(uint8_t dutyCycle);
#define BACKLIGHT_DISABLE() backlightEnable(unexpectedShutdown ? 100 : g_eeGeneral.blOffBright) #define BACKLIGHT_DISABLE() backlightEnable(unexpectedShutdown ? 100 : g_eeGeneral.blOffBright)
#define isBacklightEnabled() true #define isBacklightEnabled() true
// USB driver #if !defined(SIMU)
int usbPlugged();
void usbInit();
void usbStart();
void usbStop();
uint8_t usbStarted();
void usbSerialPutc(uint8_t c);
#if defined(USB_JOYSTICK) && !defined(SIMU)
void usbJoystickUpdate(); void usbJoystickUpdate();
#endif #endif
#if defined(PCBX12S) #if defined(PCBX12S)

View file

@ -645,6 +645,8 @@ uint32_t pwrPressed()
#if defined(STM32) #if defined(STM32)
void pwrInit() { } void pwrInit() { }
int usbPlugged() { return false; } int usbPlugged() { return false; }
int getSelectedUsbMode() { return USB_JOYSTICK_MODE; }
void setSelectedUsbMode(int mode) {}
void USART_DeInit(USART_TypeDef* ) { } void USART_DeInit(USART_TypeDef* ) { }
ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct) { return SUCCESS; } ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct) { return SUCCESS; }
ErrorStatus RTC_SetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct) { return SUCCESS; } ErrorStatus RTC_SetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct) { return SUCCESS; }

View file

@ -22,6 +22,7 @@
#define _BOARD_H_ #define _BOARD_H_
#include "stddef.h" #include "stddef.h"
#include "stdbool.h"
#if defined(__cplusplus) && !defined(SIMU) #if defined(__cplusplus) && !defined(SIMU)
extern "C" { extern "C" {
@ -71,6 +72,7 @@ extern "C" {
#pragma clang diagnostic pop #pragma clang diagnostic pop
#endif #endif
#include "usb_driver.h"
#if !defined(SIMU) #if !defined(SIMU)
#include "usbd_cdc_core.h" #include "usbd_cdc_core.h"
#include "usbd_msc_core.h" #include "usbd_msc_core.h"
@ -157,13 +159,14 @@ uint32_t sdGetSpeed(void);
#define sdInit() #define sdInit()
#define sdMount() #define sdMount()
#define sdDone() #define sdDone()
#define SD_CARD_PRESENT() true
#else #else
void sdInit(void); void sdInit(void);
void sdMount(void); void sdMount(void);
void sdDone(void); void sdDone(void);
void sdPoll10ms(void); void sdPoll10ms(void);
uint32_t sdMounted(void); uint32_t sdMounted(void);
#define SD_CARD_PRESENT() (~SD_GPIO_PRESENT->IDR & SD_GPIO_PIN_PRESENT) #define SD_CARD_PRESENT() ((SD_GPIO_PRESENT->IDR & SD_GPIO_PIN_PRESENT)==0)
#endif #endif
// Flash Write driver // Flash Write driver
@ -453,14 +456,7 @@ uint8_t isBacklightEnabled(void);
#define BACKLIGHT_ENABLE() backlightEnable(g_eeGeneral.backlightBright) #define BACKLIGHT_ENABLE() backlightEnable(g_eeGeneral.backlightBright)
#endif #endif
// USB driver #if !defined(SIMU)
int usbPlugged();
void usbInit();
void usbStart();
void usbStop();
uint8_t usbStarted();
void usbSerialPutc(uint8_t c);
#if defined(USB_JOYSTICK) && !defined(SIMU)
void usbJoystickUpdate(); void usbJoystickUpdate();
#endif #endif
#define USB_NAME "FrSky Taranis" #define USB_NAME "FrSky Taranis"

View file

@ -993,13 +993,18 @@ void sdInit(void)
void sdInit(void) void sdInit(void)
{ {
TRACE("sdInit"); TRACE("sdInit");
ioMutex = CoCreateMutex(); ioMutex = CoCreateMutex();
if (ioMutex >= CFG_MAX_MUTEX ) { if (ioMutex >= CFG_MAX_MUTEX) {
//sd error //sd error
return; return;
} }
sdMount();
}
void sdMount()
{
TRACE("sdMount");
if (f_mount(&g_FATFS_Obj, "", 1) == FR_OK) { if (f_mount(&g_FATFS_Obj, "", 1) == FR_OK) {
// call sdGetFreeSectors() now because f_getfree() takes a long time first time it's called // call sdGetFreeSectors() now because f_getfree() takes a long time first time it's called
sdGetFreeSectors(); sdGetFreeSectors();

View file

@ -138,7 +138,7 @@ void mixerTask(void * pdata)
uint32_t now = CoGetOSTime(); uint32_t now = CoGetOSTime();
bool run = false; bool run = false;
#if defined(USB_JOYSTICK) && !defined(SIMU) #if !defined(SIMU) && defined(STM32)
if ((now - lastRunTime) >= (usbStarted() ? 5 : 10)) { // run at least every 20ms (every 10ms if USB is active) if ((now - lastRunTime) >= (usbStarted() ? 5 : 10)) { // run at least every 20ms (every 10ms if USB is active)
#else #else
if ((now - lastRunTime) >= 10) { // run at least every 20ms if ((now - lastRunTime) >= 10) { // run at least every 20ms

View file

@ -436,7 +436,7 @@ __ALIGN_BEGIN const uint8_t usbd_cdc_OtherCfgDesc[USB_CDC_CONFIG_DESC_SIZ] __AL
uint8_t usbd_cdc_Init (void *pdev, uint8_t usbd_cdc_Init (void *pdev,
uint8_t cfgidx) uint8_t cfgidx)
{ {
uint8_t *pbuf; //uint8_t *pbuf;
APP_Rx_ptr_in = 0; // modified by OpenTX APP_Rx_ptr_in = 0; // modified by OpenTX
APP_Rx_ptr_out = 0; // modified by OpenTX APP_Rx_ptr_out = 0; // modified by OpenTX
@ -462,10 +462,11 @@ uint8_t usbd_cdc_Init (void *pdev,
CDC_CMD_EP, CDC_CMD_EP,
CDC_CMD_PACKET_SZE, CDC_CMD_PACKET_SZE,
USB_OTG_EP_INT); USB_OTG_EP_INT);
pbuf = (uint8_t *)USBD_DeviceDesc; /* schwabe: We don't provide direct to this, but our usb descriptor has always the same values (02 and 00) */
/*pbuf = (uint8_t *)USBD_DeviceDesc;
pbuf[4] = DEVICE_CLASS_CDC; pbuf[4] = DEVICE_CLASS_CDC;
pbuf[5] = DEVICE_SUBCLASS_CDC; pbuf[5] = DEVICE_SUBCLASS_CDC; */
/* Initialize the Interface physical components */ /* Initialize the Interface physical components */
APP_FOPS.pIf_Init(); APP_FOPS.pIf_Init();

View file

@ -61,7 +61,7 @@
* @{ * @{
*/ */
extern const USBD_Class_cb_TypeDef USBD_MSC_cb; // modified my OpenTX extern const USBD_Class_cb_TypeDef USBD_MSC_cb; // modified by OpenTX
/** /**
* @} * @}
*/ */

View file

@ -102,6 +102,7 @@ const pm_char STR_OPEN9X[] PROGMEM =
#endif #endif
#if defined(PXX) || defined(CPUARM) #if defined(PXX) || defined(CPUARM)
ISTR(COUNTRYCODES) ISTR(COUNTRYCODES)
ISTR(USBMODES)
ISTR(VFAILSAFE) ISTR(VFAILSAFE)
#endif #endif
#if defined(CPUARM) #if defined(CPUARM)
@ -385,6 +386,7 @@ const pm_char STR_INTERNALRF[] PROGMEM = TR_INTERNALRF;
const pm_char STR_EXTERNALRF[] PROGMEM = TR_EXTERNALRF; const pm_char STR_EXTERNALRF[] PROGMEM = TR_EXTERNALRF;
const pm_char STR_SPORT_OUT[] PROGMEM = TR_SPORT_OUT; const pm_char STR_SPORT_OUT[] PROGMEM = TR_SPORT_OUT;
const pm_char STR_COUNTRYCODE[] PROGMEM = TR_COUNTRYCODE; const pm_char STR_COUNTRYCODE[] PROGMEM = TR_COUNTRYCODE;
const pm_char STR_USBMODE[] PROGMEM = TR_USBMODE;
const pm_char STR_FAILSAFE[] PROGMEM = TR_FAILSAFE; const pm_char STR_FAILSAFE[] PROGMEM = TR_FAILSAFE;
const pm_char STR_FAILSAFESET[] PROGMEM = TR_FAILSAFESET; const pm_char STR_FAILSAFESET[] PROGMEM = TR_FAILSAFESET;
const pm_char STR_HOLD[] PROGMEM = TR_HOLD; const pm_char STR_HOLD[] PROGMEM = TR_HOLD;
@ -457,6 +459,9 @@ const pm_char STR_RESET_TIMER3[] PROGMEM = TR_RESET_TIMER3;
const pm_char STR_RESET_TELEMETRY[] PROGMEM = TR_RESET_TELEMETRY; const pm_char STR_RESET_TELEMETRY[] PROGMEM = TR_RESET_TELEMETRY;
const pm_char STR_STATISTICS[] PROGMEM = TR_STATISTICS; const pm_char STR_STATISTICS[] PROGMEM = TR_STATISTICS;
const pm_char STR_ABOUT_US[] PROGMEM = TR_ABOUT_US; const pm_char STR_ABOUT_US[] PROGMEM = TR_ABOUT_US;
const pm_char STR_USB_JOYSTICK[] PROGMEM = TR_USB_JOYSTICK;
const pm_char STR_USB_MASS_STORAGE[] PROGMEM = TR_USB_MASS_STORAGE;
const pm_char STR_USB_SERIAL[] PROGMEM = TR_USB_SERIAL;
const pm_char STR_SETUP_SCREENS[] PROGMEM = TR_SETUP_SCREENS; const pm_char STR_SETUP_SCREENS[] PROGMEM = TR_SETUP_SCREENS;
const pm_char STR_MONITOR_SCREENS[] PROGMEM = TR_MONITOR_SCREENS; const pm_char STR_MONITOR_SCREENS[] PROGMEM = TR_MONITOR_SCREENS;
#endif #endif

View file

@ -207,11 +207,12 @@ extern const pm_char STR_OPEN9X[];
#define OFS_VBEEPCOUNTDOWN (OFS_VUNITSSYSTEM + sizeof(TR_VUNITSSYSTEM)) #define OFS_VBEEPCOUNTDOWN (OFS_VUNITSSYSTEM + sizeof(TR_VUNITSSYSTEM))
#define OFS_VVARIOCENTER (OFS_VBEEPCOUNTDOWN + sizeof(TR_VBEEPCOUNTDOWN)) #define OFS_VVARIOCENTER (OFS_VBEEPCOUNTDOWN + sizeof(TR_VBEEPCOUNTDOWN))
#define OFS_COUNTRYCODES (OFS_VVARIOCENTER + sizeof(TR_VVARIOCENTER)) #define OFS_COUNTRYCODES (OFS_VVARIOCENTER + sizeof(TR_VVARIOCENTER))
#define OFS_USBMODES (OFS_COUNTRYCODES + sizeof(TR_COUNTRYCODES))
#else #else
#define OFS_COUNTRYCODES (OFS_VLCD) #define OFS_COUNTRYCODES (OFS_VLCD)
#endif #endif
#if defined(PXX) || defined(CPUARM) #if defined(PXX) || defined(CPUARM)
#define OFS_VFAILSAFE (OFS_COUNTRYCODES + sizeof(TR_COUNTRYCODES)) #define OFS_VFAILSAFE (OFS_USBMODES + sizeof(TR_USBMODES))
#define OFS_VTRAINERMODES (OFS_VFAILSAFE + sizeof(TR_VFAILSAFE)) #define OFS_VTRAINERMODES (OFS_VFAILSAFE + sizeof(TR_VFAILSAFE))
#else #else
#define OFS_VFAILSAFE (OFS_COUNTRYCODES) #define OFS_VFAILSAFE (OFS_COUNTRYCODES)
@ -340,6 +341,7 @@ extern const pm_char STR_OPEN9X[];
#if defined(PXX) || defined(CPUARM) #if defined(PXX) || defined(CPUARM)
#define STR_COUNTRYCODES (STR_OPEN9X + OFS_COUNTRYCODES) #define STR_COUNTRYCODES (STR_OPEN9X + OFS_COUNTRYCODES)
#define STR_USBMODES (STR_OPEN9X + OFS_USBMODES)
#define STR_VFAILSAFE (STR_OPEN9X + OFS_VFAILSAFE) #define STR_VFAILSAFE (STR_OPEN9X + OFS_VFAILSAFE)
#endif #endif
@ -632,6 +634,7 @@ extern const pm_char STR_NONE[];
extern const pm_char STR_MENUSENSOR[]; extern const pm_char STR_MENUSENSOR[];
extern const pm_char STR_SENSOR[]; extern const pm_char STR_SENSOR[];
extern const pm_char STR_COUNTRYCODE[]; extern const pm_char STR_COUNTRYCODE[];
extern const pm_char STR_USBMODE[];
extern const pm_char STR_DISABLE_INTERNAL[]; extern const pm_char STR_DISABLE_INTERNAL[];
#endif #endif
@ -703,6 +706,9 @@ extern const pm_char STR_PERSISTENT_MAH[];
extern const pm_char STR_RESET_TELEMETRY[]; extern const pm_char STR_RESET_TELEMETRY[];
extern const pm_char STR_STATISTICS[]; extern const pm_char STR_STATISTICS[];
extern const pm_char STR_ABOUT_US[]; extern const pm_char STR_ABOUT_US[];
extern const pm_char STR_USB_JOYSTICK[];
extern const pm_char STR_USB_MASS_STORAGE[];
extern const pm_char STR_USB_SERIAL[];
extern const pm_char STR_SETUP_SCREENS[]; extern const pm_char STR_SETUP_SCREENS[];
extern const pm_char STR_MONITOR_SCREENS[]; extern const pm_char STR_MONITOR_SCREENS[];
#endif #endif

View file

@ -92,6 +92,9 @@
#define LEN_COUNTRYCODES TR("\002", "\010") #define LEN_COUNTRYCODES TR("\002", "\010")
#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika\0""Japonsko""Evropa\0 ") #define TR_COUNTRYCODES TR("US""JP""EU", "Amerika\0""Japonsko""Evropa\0 ")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "Vyp\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "Vyp\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0"
@ -996,6 +999,7 @@
#define TR_MENUSENSOR "SENZOR" #define TR_MENUSENSOR "SENZOR"
#define TR_SENSOR "SENZOR" #define TR_SENSOR "SENZOR"
#define TR_COUNTRYCODE "Kód regionu" #define TR_COUNTRYCODE "Kód regionu"
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG "Jazyk hlasu" #define TR_VOICELANG "Jazyk hlasu"
#define TR_UNITSSYSTEM "Jednotky" #define TR_UNITSSYSTEM "Jednotky"
#define TR_EDIT "Upravit" #define TR_EDIT "Upravit"
@ -1013,6 +1017,9 @@
#define TR_RESET_TELEMETRY "Telemetrii" #define TR_RESET_TELEMETRY "Telemetrii"
#define TR_STATISTICS "Statistika" #define TR_STATISTICS "Statistika"
#define TR_ABOUT_US "O nás" #define TR_ABOUT_US "O nás"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Setup screens" #define TR_SETUP_SCREENS "Setup screens"
#define TR_MONITOR_SCREENS "Monitory" #define TR_MONITOR_SCREENS "Monitory"
#define TR_AND_SWITCH "AND Spínač" #define TR_AND_SWITCH "AND Spínač"

View file

@ -98,6 +98,9 @@
#define LEN_COUNTRYCODES TR("\002", "\007") #define LEN_COUNTRYCODES TR("\002", "\007")
#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0") #define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "AUS\0""PPM\0""XJT\0""DSM?""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "AUS\0""PPM\0""XJT\0""DSM?""CRSF""MULT""R9M\0"
@ -1018,6 +1021,7 @@
#define TR_MENUSENSOR "SENSOR" #define TR_MENUSENSOR "SENSOR"
#define TR_SENSOR "SENSOR" #define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Landescode" #define TR_COUNTRYCODE "Landescode"
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG "Sprach-Ansage" #define TR_VOICELANG "Sprach-Ansage"
#define TR_UNITSSYSTEM "Einheiten" #define TR_UNITSSYSTEM "Einheiten"
#define TR_EDIT "Zeile Editieren" #define TR_EDIT "Zeile Editieren"
@ -1035,6 +1039,9 @@
#define TR_RESET_TELEMETRY "Reset Telemetrie" #define TR_RESET_TELEMETRY "Reset Telemetrie"
#define TR_STATISTICS "Statistik Timer Gas" #define TR_STATISTICS "Statistik Timer Gas"
#define TR_ABOUT_US "Die Programmierer" #define TR_ABOUT_US "Die Programmierer"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Setup Hautbildschirme" #define TR_SETUP_SCREENS "Setup Hautbildschirme"
#define TR_MONITOR_SCREENS "Monitore Mischer Kanal Logik" #define TR_MONITOR_SCREENS "Monitore Mischer Kanal Logik"
#define TR_AND_SWITCH "UND Schalt" //UND mit weiterem Schaltern #define TR_AND_SWITCH "UND Schalt" //UND mit weiterem Schaltern

View file

@ -98,6 +98,9 @@
#define LEN_COUNTRYCODES TR("\002", "\007") #define LEN_COUNTRYCODES TR("\002", "\007")
#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0") #define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0"
@ -1000,6 +1003,7 @@
#define TR_MENUSENSOR "SENSOR" #define TR_MENUSENSOR "SENSOR"
#define TR_SENSOR "SENSOR" #define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Country code" #define TR_COUNTRYCODE "Country code"
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG "Voice language" #define TR_VOICELANG "Voice language"
#define TR_UNITSSYSTEM "Units" #define TR_UNITSSYSTEM "Units"
#define TR_EDIT "Edit" #define TR_EDIT "Edit"
@ -1017,6 +1021,9 @@
#define TR_RESET_TELEMETRY "Reset telemetry" #define TR_RESET_TELEMETRY "Reset telemetry"
#define TR_STATISTICS "Statistics" #define TR_STATISTICS "Statistics"
#define TR_ABOUT_US "About" #define TR_ABOUT_US "About"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Setup screens" #define TR_SETUP_SCREENS "Setup screens"
#define TR_MONITOR_SCREENS "Monitors" #define TR_MONITOR_SCREENS "Monitors"
#define TR_AND_SWITCH "AND switch" #define TR_AND_SWITCH "AND switch"

View file

@ -94,6 +94,9 @@
#define LEN_COUNTRYCODES TR("\002", "\007") #define LEN_COUNTRYCODES TR("\002", "\007")
#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japon\0 ""Europa\0") #define TR_COUNTRYCODES TR("US""JP""EU", "America""Japon\0 ""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0"
@ -976,6 +979,7 @@
#define TR_MENUSENSOR "SENSOR" #define TR_MENUSENSOR "SENSOR"
#define TR_SENSOR "SENSOR" #define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Codigo Pais" #define TR_COUNTRYCODE "Codigo Pais"
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG "Idioma voces" #define TR_VOICELANG "Idioma voces"
#define TR_UNITSSYSTEM "Unidades" #define TR_UNITSSYSTEM "Unidades"
#define TR_EDIT "Editar" #define TR_EDIT "Editar"
@ -993,6 +997,9 @@
#define TR_RESET_TELEMETRY "Reset Telemetria" #define TR_RESET_TELEMETRY "Reset Telemetria"
#define TR_STATISTICS "Estadisticas" #define TR_STATISTICS "Estadisticas"
#define TR_ABOUT_US "Nosotros" #define TR_ABOUT_US "Nosotros"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Setup screens" #define TR_SETUP_SCREENS "Setup screens"
#define TR_MONITOR_SCREENS "Monitors" #define TR_MONITOR_SCREENS "Monitors"
#define TR_AND_SWITCH "AND Inter." #define TR_AND_SWITCH "AND Inter."

View file

@ -94,6 +94,9 @@
#define LEN_COUNTRYCODES TR("\002", "\007") #define LEN_COUNTRYCODES TR("\002", "\007")
#define TR_COUNTRYCODES TR("US""JP""EU", "Amerikk""Japani\0""Euroopp") #define TR_COUNTRYCODES TR("US""JP""EU", "Amerikk""Japani\0""Euroopp")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0"
@ -972,6 +975,7 @@
#define TR_MENUSENSOR "SENSOR" #define TR_MENUSENSOR "SENSOR"
#define TR_SENSOR "SENSOR" #define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Country Code" #define TR_COUNTRYCODE "Country Code"
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG "Voice Language" #define TR_VOICELANG "Voice Language"
#define TR_UNITSSYSTEM "Units" #define TR_UNITSSYSTEM "Units"
#define TR_EDIT "Edit" #define TR_EDIT "Edit"
@ -989,6 +993,9 @@
#define TR_RESET_TELEMETRY "Reset Telemetry" #define TR_RESET_TELEMETRY "Reset Telemetry"
#define TR_STATISTICS "Statistics" #define TR_STATISTICS "Statistics"
#define TR_ABOUT_US "About" #define TR_ABOUT_US "About"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Setup screens" #define TR_SETUP_SCREENS "Setup screens"
#define TR_MONITOR_SCREENS "Monitors" #define TR_MONITOR_SCREENS "Monitors"
#define TR_AND_SWITCH "AND Switch" #define TR_AND_SWITCH "AND Switch"

View file

@ -94,6 +94,9 @@
#define LEN_COUNTRYCODES TR("\002", "\006") #define LEN_COUNTRYCODES TR("\002", "\006")
#define TR_COUNTRYCODES TR("US""JP""EU", "USA\0 ""Japon\0""Europe") #define TR_COUNTRYCODES TR("US""JP""EU", "USA\0 ""Japon\0""Europe")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0"
@ -997,6 +1000,7 @@
#define TR_MENUSENSOR "CAPTEUR" #define TR_MENUSENSOR "CAPTEUR"
#define TR_SENSOR "SENSOR" #define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE TR("Zone géo.", "Zone géographique") #define TR_COUNTRYCODE TR("Zone géo.", "Zone géographique")
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG TR("Langue voix", "Langue annonces vocales") #define TR_VOICELANG TR("Langue voix", "Langue annonces vocales")
#define TR_UNITSSYSTEM "Unités" #define TR_UNITSSYSTEM "Unités"
#define TR_EDIT "Editer" #define TR_EDIT "Editer"
@ -1014,6 +1018,9 @@
#define TR_RESET_TELEMETRY TR("Réinit. Télém.", "Réinit. Télémesure") #define TR_RESET_TELEMETRY TR("Réinit. Télém.", "Réinit. Télémesure")
#define TR_STATISTICS "Statistiques" #define TR_STATISTICS "Statistiques"
#define TR_ABOUT_US "A propos" #define TR_ABOUT_US "A propos"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Configuration écrans" #define TR_SETUP_SCREENS "Configuration écrans"
#define TR_MONITOR_SCREENS "Moniteurs" #define TR_MONITOR_SCREENS "Moniteurs"
#define TR_AND_SWITCH "ET suppl." #define TR_AND_SWITCH "ET suppl."

View file

@ -94,6 +94,9 @@
#define LEN_COUNTRYCODES TR("\002", "\007") #define LEN_COUNTRYCODES TR("\002", "\007")
#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europa\0") #define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0"
@ -1001,6 +1004,7 @@
#define TR_MENUSENSOR "SENSOR" #define TR_MENUSENSOR "SENSOR"
#define TR_SENSOR "SENSOR" #define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE TR("Codice Paese","Standard 2.4Ghz") #define TR_COUNTRYCODE TR("Codice Paese","Standard 2.4Ghz")
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG "Lingua Voce" #define TR_VOICELANG "Lingua Voce"
#define TR_UNITSSYSTEM "Unità" #define TR_UNITSSYSTEM "Unità"
#define TR_EDIT "Modifica" #define TR_EDIT "Modifica"
@ -1018,6 +1022,9 @@
#define TR_RESET_TELEMETRY "Azzera Telemetria" #define TR_RESET_TELEMETRY "Azzera Telemetria"
#define TR_STATISTICS "Statistiche" #define TR_STATISTICS "Statistiche"
#define TR_ABOUT_US "Info su" #define TR_ABOUT_US "Info su"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Setup screens" #define TR_SETUP_SCREENS "Setup screens"
#define TR_MONITOR_SCREENS "Monitors" #define TR_MONITOR_SCREENS "Monitors"
#define TR_AND_SWITCH "Inter. AND" #define TR_AND_SWITCH "Inter. AND"

View file

@ -99,6 +99,9 @@
#define LEN_COUNTRYCODES TR("\002", "\007") #define LEN_COUNTRYCODES TR("\002", "\007")
#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0") #define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "UIT\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "UIT\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0"
@ -996,6 +999,7 @@
#define TR_MENUSENSOR "SENSOR" #define TR_MENUSENSOR "SENSOR"
#define TR_SENSOR "SENSOR" #define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Landcode" #define TR_COUNTRYCODE "Landcode"
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG "Taal" #define TR_VOICELANG "Taal"
#define TR_UNITSSYSTEM "Eenheden" #define TR_UNITSSYSTEM "Eenheden"
#define TR_EDIT "Wijzigen" #define TR_EDIT "Wijzigen"
@ -1013,6 +1017,9 @@
#define TR_RESET_TELEMETRY "Reset Telemetrie" #define TR_RESET_TELEMETRY "Reset Telemetrie"
#define TR_STATISTICS "Statistieken" #define TR_STATISTICS "Statistieken"
#define TR_ABOUT_US "De Programmeurs" #define TR_ABOUT_US "De Programmeurs"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Setup screens" #define TR_SETUP_SCREENS "Setup screens"
#define TR_MONITOR_SCREENS "Monitors" #define TR_MONITOR_SCREENS "Monitors"
#define TR_AND_SWITCH "AND Switch" #define TR_AND_SWITCH "AND Switch"

View file

@ -95,6 +95,9 @@
#define LEN_COUNTRYCODES TR("\002", "\007") #define LEN_COUNTRYCODES TR("\002", "\007")
#define TR_COUNTRYCODES TR("US""JP""EU", "Ameryka""Japonia""Europa\0") #define TR_COUNTRYCODES TR("US""JP""EU", "Ameryka""Japonia""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0"
@ -1004,6 +1007,7 @@
#define TR_MENUSENSOR "CZUJNIK" #define TR_MENUSENSOR "CZUJNIK"
#define TR_SENSOR "SENSOR" #define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Kod regionu" #define TR_COUNTRYCODE "Kod regionu"
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG "Język głosu" #define TR_VOICELANG "Język głosu"
#define TR_UNITSSYSTEM "Jednostki" #define TR_UNITSSYSTEM "Jednostki"
#define TR_EDIT "Edytuj" #define TR_EDIT "Edytuj"
@ -1021,6 +1025,9 @@
#define TR_RESET_TELEMETRY "Wyczyść telemetrię" #define TR_RESET_TELEMETRY "Wyczyść telemetrię"
#define TR_STATISTICS "Statystyki" #define TR_STATISTICS "Statystyki"
#define TR_ABOUT_US "O nas" #define TR_ABOUT_US "O nas"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Setup screens" #define TR_SETUP_SCREENS "Setup screens"
#define TR_MONITOR_SCREENS "Monitors" #define TR_MONITOR_SCREENS "Monitors"
#define TR_AND_SWITCH "Przełącznik AND" #define TR_AND_SWITCH "Przełącznik AND"

View file

@ -94,6 +94,9 @@
#define LEN_COUNTRYCODES TR("\002", "\007") #define LEN_COUNTRYCODES TR("\002", "\007")
#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0") #define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0"
@ -977,6 +980,7 @@
#define TR_MENUSENSOR "SENSOR" #define TR_MENUSENSOR "SENSOR"
#define TR_SENSOR "SENSOR" #define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Country Code" #define TR_COUNTRYCODE "Country Code"
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG "Voice Language" #define TR_VOICELANG "Voice Language"
#define TR_UNITSSYSTEM "Units" #define TR_UNITSSYSTEM "Units"
#define TR_EDIT "Edit" #define TR_EDIT "Edit"
@ -994,6 +998,9 @@
#define TR_RESET_TELEMETRY "Reset Telemetry" #define TR_RESET_TELEMETRY "Reset Telemetry"
#define TR_STATISTICS "Statistics" #define TR_STATISTICS "Statistics"
#define TR_ABOUT_US "About Us" #define TR_ABOUT_US "About Us"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Setup screens" #define TR_SETUP_SCREENS "Setup screens"
#define TR_MONITOR_SCREENS "Monitors" #define TR_MONITOR_SCREENS "Monitors"
#define TR_AND_SWITCH "AND Switch" #define TR_AND_SWITCH "AND Switch"

View file

@ -94,6 +94,9 @@
#define LEN_COUNTRYCODES TR("\002", "\007") #define LEN_COUNTRYCODES TR("\002", "\007")
#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0") #define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0")
#define LEN_USBMODES TR("\006", "\010")
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Debug\0", "Ask\0 ""Joystick""Storage\0""Debug\0 ")
#define LEN_TARANIS_PROTOCOLS "\004" #define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "Av\0 ""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0" #define TR_TARANIS_PROTOCOLS "Av\0 ""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0"
@ -1015,6 +1018,7 @@
#define TR_MENUSENSOR "SENSOR" #define TR_MENUSENSOR "SENSOR"
#define TR_SENSOR "SENSOR" #define TR_SENSOR "SENSOR"
#define TR_COUNTRYCODE "Landskod" #define TR_COUNTRYCODE "Landskod"
#define TR_USBMODE "USB Mode"
#define TR_VOICELANG "Röstspråk" #define TR_VOICELANG "Röstspråk"
#define TR_UNITSSYSTEM "Enheter" #define TR_UNITSSYSTEM "Enheter"
#define TR_EDIT "Redigera" #define TR_EDIT "Redigera"
@ -1032,6 +1036,9 @@
#define TR_RESET_TELEMETRY "Nollställ Telemetri" #define TR_RESET_TELEMETRY "Nollställ Telemetri"
#define TR_STATISTICS "Statistik" #define TR_STATISTICS "Statistik"
#define TR_ABOUT_US "Om Oss" #define TR_ABOUT_US "Om Oss"
#define TR_USB_JOYSTICK "USB Joystick (HID)"
#define TR_USB_MASS_STORAGE "USB mass storage"
#define TR_USB_SERIAL "USB Serial (Debug)"
#define TR_SETUP_SCREENS "Setup screens" #define TR_SETUP_SCREENS "Setup screens"
#define TR_MONITOR_SCREENS "Monitors" #define TR_MONITOR_SCREENS "Monitors"
#define TR_AND_SWITCH "OCH Brytare" #define TR_AND_SWITCH "OCH Brytare"

View file

@ -242,8 +242,6 @@ options_taranis = {
"faimode": ("FAI", "YES", None), "faimode": ("FAI", "YES", None),
"faichoice": ("FAI", "CHOICE", None), "faichoice": ("FAI", "CHOICE", None),
"nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
"massstorage": ("USB", "MASSSTORAGE", None),
"cli": ("USB", "SERIAL", None),
"internalppm": ("TARANIS_INTERNAL_PPM", "YES", "NO"), "internalppm": ("TARANIS_INTERNAL_PPM", "YES", "NO"),
"shutdownconfirm": ("SHUTDOWN_CONFIRMATION", "YES", "NO"), "shutdownconfirm": ("SHUTDOWN_CONFIRMATION", "YES", "NO"),
"eu": ("SUPPORT_D16_EU_ONLY", "YES", "NO"), "eu": ("SUPPORT_D16_EU_ONLY", "YES", "NO"),
@ -262,8 +260,6 @@ options_taranisplus = {
"faimode": ("FAI", "YES", None), "faimode": ("FAI", "YES", None),
"faichoice": ("FAI", "CHOICE", None), "faichoice": ("FAI", "CHOICE", None),
"nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
"massstorage": ("USB", "MASSSTORAGE", None),
"cli": ("USB", "SERIAL", None),
"internalppm": ("TARANIS_INTERNAL_PPM", "YES", "NO"), "internalppm": ("TARANIS_INTERNAL_PPM", "YES", "NO"),
"shutdownconfirm": ("SHUTDOWN_CONFIRMATION", "YES", "NO"), "shutdownconfirm": ("SHUTDOWN_CONFIRMATION", "YES", "NO"),
"eu": ("SUPPORT_D16_EU_ONLY", "YES", "NO"), "eu": ("SUPPORT_D16_EU_ONLY", "YES", "NO"),
@ -282,8 +278,6 @@ options_taranisx9e = {
"faimode": ("FAI", "YES", None), "faimode": ("FAI", "YES", None),
"faichoice": ("FAI", "CHOICE", None), "faichoice": ("FAI", "CHOICE", None),
"nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
"massstorage": ("USB", "MASSSTORAGE", None),
"cli": ("USB", "SERIAL", None),
"internalppm": ("TARANIS_INTERNAL_PPM", "YES", "NO"), "internalppm": ("TARANIS_INTERNAL_PPM", "YES", "NO"),
"shutdownconfirm": ("SHUTDOWN_CONFIRMATION", "YES", "NO"), "shutdownconfirm": ("SHUTDOWN_CONFIRMATION", "YES", "NO"),
"eu": ("SUPPORT_D16_EU_ONLY", "YES", "NO"), "eu": ("SUPPORT_D16_EU_ONLY", "YES", "NO"),
@ -301,8 +295,6 @@ options_x12s = {
"faimode": ("FAI", "YES", None), "faimode": ("FAI", "YES", None),
"faichoice": ("FAI", "CHOICE", None), "faichoice": ("FAI", "CHOICE", None),
"nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
"massstorage": ("USB", "MASSSTORAGE", None),
"cli": ("USB", "SERIAL", None),
"eu": ("SUPPORT_D16_EU_ONLY", "YES", "NO"), "eu": ("SUPPORT_D16_EU_ONLY", "YES", "NO"),
"multimodule": ("MULTIMODULE", "YES", "NO"), "multimodule": ("MULTIMODULE", "YES", "NO"),
"pcbdev": ("PCBREV", "10", None), "pcbdev": ("PCBREV", "10", None),
@ -318,8 +310,6 @@ options_x10 = {
"faimode": ("FAI", "YES", None), "faimode": ("FAI", "YES", None),
"faichoice": ("FAI", "CHOICE", None), "faichoice": ("FAI", "CHOICE", None),
"nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"), "nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
"massstorage": ("USB", "MASSSTORAGE", None),
"cli": ("USB", "SERIAL", None),
"eu": ("SUPPORT_D16_EU_ONLY", "YES", "NO"), "eu": ("SUPPORT_D16_EU_ONLY", "YES", "NO"),
"multimodule": ("MULTIMODULE", "YES", "NO"), "multimodule": ("MULTIMODULE", "YES", "NO"),
"bindopt": ("BINDING_OPTIONS", "YES", "NO") "bindopt": ("BINDING_OPTIONS", "YES", "NO")