Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions companion/src/firmwares/edgetx/yaml_modeldata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,14 @@ static const YamlLookupTable globalOnOffFilterLut = {
{ 2, "ON" },
};

static const YamlLookupTable usbModeLut = {
{ 0, "GLOBAL" },
{ 1, "ASK" },
{ 2, "JOYSTICK" },
{ 3, "STORAGE" },
{ 4, "SERIAL" },
};

static const YamlLookupTable usbJoystickIfModeLut = {
{ 0, "JOYSTICK" },
{ 1, "GAMEPAD" },
Expand Down Expand Up @@ -1163,6 +1171,7 @@ Node convert<ModelData>::encode(const ModelData& rhs)
node["potsWarnEnabled"] = potsWarnEnabled.value;

node["jitterFilter"] = globalOnOffFilterLut << rhs.jitterFilter;
node["usbMode"] = usbModeLut << rhs.usbMode;

for (int i = 0; i < CPN_MAX_POTS + CPN_MAX_SLIDERS; i++) {
if (rhs.potsWarnPosition[i] != 0)
Expand Down Expand Up @@ -1448,6 +1457,7 @@ bool convert<ModelData>::decode(const Node& node, ModelData& rhs)
node["thrTrimSw"] >> rhs.thrTrimSwitch;
node["potsWarnMode"] >> potsWarningModeLut >> rhs.potsWarningMode;
node["jitterFilter"] >> globalOnOffFilterLut >> rhs.jitterFilter;
node["usbMode"] >> usbModeLut >> rhs.usbMode;

YamlPotsWarnEnabled potsWarnEnabled;
node["potsWarnEnabled"] >> potsWarnEnabled.value;
Expand Down
2 changes: 2 additions & 0 deletions companion/src/firmwares/modeldata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ void ModelData::copy(const ModelData & src)
enableCustomThrottleWarning = src.enableCustomThrottleWarning;
customThrottleWarningPosition = src.customThrottleWarningPosition;
jitterFilter = src.jitterFilter;
usbMode = src.usbMode;
beepANACenter = src.beepANACenter;
extendedLimits = src.extendedLimits;
extendedTrims = src.extendedTrims;
Expand Down Expand Up @@ -251,6 +252,7 @@ void ModelData::clear()
enableCustomThrottleWarning = false;
customThrottleWarningPosition = 0;
jitterFilter = 0;
usbMode = 0;
beepANACenter = 0;
extendedLimits = false;
extendedTrims = false;
Expand Down
1 change: 1 addition & 0 deletions companion/src/firmwares/modeldata.h
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ class ModelData {
bool enableCustomThrottleWarning;
int customThrottleWarningPosition;
unsigned int jitterFilter; // Added in EdgeTx 2.7 (#870)
unsigned int usbMode; // 0 = global, otherwise radio USB mode + 1

unsigned int beepANACenter; // 1<<0->A1.. 1<<6->A7

Expand Down
9 changes: 9 additions & 0 deletions companion/src/modeledit/setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,7 @@ void SetupPanel::update()
ui->checklistInteractive->setChecked(model->checklistInteractive);
ui->gfEnabled->setChecked(!model->noGlobalFunctions);
ui->jitterFilter->setCurrentIndex(model->jitterFilter);
ui->usbMode->setCurrentIndex(model->usbMode);

updateBeepCenter();
updateStartupSwitches();
Expand Down Expand Up @@ -569,6 +570,14 @@ void SetupPanel::on_jitterFilter_currentIndexChanged(int index)
}
}

void SetupPanel::on_usbMode_currentIndexChanged(int index)
{
if (!lock) {
model->usbMode = ui->usbMode->currentIndex();
emit modified();
}
}

void SetupPanel::on_throttleTrim_toggled(bool checked)
{
model->thrTrim = checked;
Expand Down
1 change: 1 addition & 0 deletions companion/src/modeledit/setup.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ class SetupPanel : public ModelPanel
void onModuleUpdateItemModels();
void onFunctionSwitchesUpdateItemModels();
void on_jitterFilter_currentIndexChanged(int index);
void on_usbMode_currentIndexChanged(int index);

private:
Ui::Setup *ui;
Expand Down
47 changes: 47 additions & 0 deletions companion/src/modeledit/setup.ui
Original file line number Diff line number Diff line change
Expand Up @@ -615,6 +615,53 @@
</item>
</widget>
</item>
<item row="1" column="4">
<widget class="QLabel" name="label_usbMode">
<property name="font">
<font>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>USB mode</string>
</property>
</widget>
</item>
<item row="1" column="5">
<widget class="QComboBox" name="usbMode">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>Global</string>
</property>
</item>
<item>
<property name="text">
<string>Ask on Connect</string>
</property>
</item>
<item>
<property name="text">
<string>Joystick (HID)</string>
</property>
</item>
<item>
<property name="text">
<string>USB Mass Storage</string>
</property>
</item>
<item>
<property name="text">
<string>USB Serial (CDC)</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="AutoComboBox" name="cboHatsMode"/>
</item>
Expand Down
9 changes: 9 additions & 0 deletions radio/src/dataconstants.h
Original file line number Diff line number Diff line change
Expand Up @@ -708,6 +708,15 @@ enum ModelOverridableEnable {
OVERRIDE_ON
};

// Model USB mode: GLOBAL uses the radio setting, others are USB mode + 1
enum ModelUsbMode {
USBMODE_GLOBAL,
USBMODE_ASK,
USBMODE_JOYSTICK,
USBMODE_STORAGE,
USBMODE_SERIAL
};

#define SELECTED_THEME_NAME_LEN 26

// PPM Units
Expand Down
20 changes: 10 additions & 10 deletions radio/src/datastructs.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,28 +121,28 @@ static inline void check_struct()
CHKSIZE(ModelData, 6329);
#elif defined(PCBPL18)
#if defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY)
CHKSIZE(ModelData, 6875);
CHKSIZE(ModelData, 6876);
#else
CHKSIZE(ModelData, 6877);
CHKSIZE(ModelData, 6878);
#endif
#elif defined(PCBST16) || defined(RADIO_T15PRO) || defined(RADIO_T15H7) || defined(RADIO_T18H7) || defined(RADIO_TX15) || defined(RADIO_GX15) || defined(RADIO_V15)
CHKSIZE(ModelData, 7641);
CHKSIZE(ModelData, 7642);
#elif defined(RADIO_V12)
CHKSIZE(ModelData, 7640);
CHKSIZE(ModelData, 7641);
#elif defined(PCBC14) || defined(RADIO_H17)
CHKSIZE(ModelData, 7573);
CHKSIZE(ModelData, 7574);
#elif defined(PCBPA01)
CHKSIZE(ModelData, 7582);
CHKSIZE(ModelData, 7583);
#elif defined(RADIO_T15)
CHKSIZE(ModelData, 6867);
CHKSIZE(ModelData, 6868);
#elif defined(RADIO_T22)
CHKSIZE(ModelData, 7641);
#elif defined(RADIO_TX16SMK3)
CHKSIZE(ModelData, 7642);
#elif defined(RADIO_TX16SMK3)
CHKSIZE(ModelData, 7643);
#elif defined(RADIO_H7RS)
// CHKSIZE()
#elif defined(PCBHORUS)
CHKSIZE(ModelData, 6841);
CHKSIZE(ModelData, 6842);
#else
#error CHKSIZE not set up
#endif
Expand Down
2 changes: 2 additions & 0 deletions radio/src/datastructs_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -930,6 +930,8 @@ PACK(struct ModelData {
uint8_t modelCustomScriptsDisabled:2 ENUM(ModelOverridableEnable);
uint8_t modelTelemetryDisabled:2 ENUM(ModelOverridableEnable);

NOBACKUP(uint8_t usbMode:3 ENUM(ModelUsbMode));

SwitchConfig getSwitchType(uint8_t n);
void setSwitchType(uint8_t n, SwitchConfig v);
char* getSwitchCustomName(uint8_t n);
Expand Down
7 changes: 7 additions & 0 deletions radio/src/gui/128x64/model_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "mixer_scheduler.h"
#include "hal/adc_driver.h"
#include "hal/switch_driver.h"
#include "hal/usb_driver.h"
#include "hal/module_port.h"
#include "hal/rgbleds.h"
#include "switches.h"
Expand Down Expand Up @@ -129,6 +130,7 @@ enum MenuModelSetupItems {
#endif
ITEM_MODEL_SETUP_BEEP_CENTER,
ITEM_MODEL_SETUP_USE_JITTER_FILTER,
ITEM_MODEL_SETUP_USB_MODE,
#if defined(PXX2)
ITEM_MODEL_SETUP_REGISTRATION_ID,
#endif
Expand Down Expand Up @@ -839,6 +841,7 @@ void menuModelSetup(event_t event)
uint8_t(NAVIGATION_LINE_BY_LINE | (adcGetInputOffset(ADC_INPUT_FLEX + 1) - 1)), // Center beeps

0, // ADC Jitter filter
0, // USB mode

REGISTRATION_ID_ROWS

Expand Down Expand Up @@ -1413,6 +1416,10 @@ void menuModelSetup(event_t event)
g_model.jitterFilter = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_JITTER_FILTER, STR_ADCFILTERVALUES, g_model.jitterFilter, 0, 2, attr, event);
break;

case ITEM_MODEL_SETUP_USB_MODE:
g_model.usbMode = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_USBMODE, STR_MODEL_USBMODES, g_model.usbMode, USBMODE_GLOBAL, USB_MAX_MODE + 1, attr, event);
break;


#if defined(HARDWARE_INTERNAL_MODULE)
case ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL:
Expand Down
10 changes: 10 additions & 0 deletions radio/src/gui/128x64/radio_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ enum {
IF_FAI_CHOICE(ITEM_RADIO_SETUP_FAI)
ITEM_RADIO_SETUP_SWITCHES_DELAY,
ITEM_RADIO_SETUP_USB_MODE,
ITEM_RADIO_SETUP_USB_MODE_OVERRIDE,
CASE_JACK_DETECT(ITEM_RADIO_SETUP_JACK_MODE)
ITEM_RADIO_SETUP_RX_CHANNEL_ORD,
CASE_ROTARY_ENCODER(ITEM_RADIO_SETUP_ROTARY_ENC_MODE)
Expand Down Expand Up @@ -155,6 +156,7 @@ static struct RadioSetupExpandState expandState;
static uint8_t SOUND_ROW(uint8_t value) { return expandState.sound ? value : HIDDEN_ROW; }
static uint8_t SOUND_WARNING_ROW(uint8_t value) { return expandState.sound && isFunctionActive(FUNCTION_VOLUME) ? value : HIDDEN_ROW; }
static uint8_t BACKLIGHT_WARNING_ROW(uint8_t value) { return isFunctionActive(FUNCTION_BACKLIGHT) ? value : HIDDEN_ROW; }
static uint8_t USB_MODE_OVERRIDE_ROW(uint8_t value) { return g_model.usbMode != USBMODE_GLOBAL ? value : HIDDEN_ROW; }

static uint8_t ALARMS_ROW(uint8_t value) { return expandState.alarms ? value : HIDDEN_ROW; }

Expand Down Expand Up @@ -275,6 +277,7 @@ void menuRadioSetup(event_t event)
IF_FAI_CHOICE(0)
0,
0, // USB mode
USB_MODE_OVERRIDE_ROW(LABEL(0)), // model USB mode override
CASE_JACK_DETECT(0) // Jack mode
0, // Channel order
CASE_ROTARY_ENCODER(0)
Expand Down Expand Up @@ -861,6 +864,13 @@ void menuRadioSetup(event_t event)
g_eeGeneral.USBMode = editChoice(LCD_W-2, y, STR_USBMODE, STR_USBMODES, g_eeGeneral.USBMode, USB_UNSELECTED_MODE, USB_MAX_MODE, attr|RIGHT, event);
break;

case ITEM_RADIO_SETUP_USB_MODE_OVERRIDE: {
std::string s(STR_MODEL);
s += " - ";
s += STR_MODEL_USBMODES[g_model.usbMode];
lcdDrawText(LCD_W - MENUS_SCROLLBAR_WIDTH, y, s.c_str(), RIGHT);
} break;

#if defined(JACK_DETECT_GPIO)
case ITEM_RADIO_SETUP_JACK_MODE:
g_eeGeneral.jackMode = editChoice(LCD_W-2, y, STR_JACK_MODE, STR_JACK_MODES, g_eeGeneral.jackMode, JACK_UNSELECTED_MODE, JACK_MAX_MODE, attr|RIGHT, event);
Expand Down
7 changes: 7 additions & 0 deletions radio/src/gui/212x64/model_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "hal/adc_driver.h"
#include "hal/adc_driver.h"
#include "hal/switch_driver.h"
#include "hal/usb_driver.h"
#include "hal/module_port.h"

#include "edgetx.h"
Expand Down Expand Up @@ -103,6 +104,7 @@ enum MenuModelSetupItems {
#endif
ITEM_MODEL_SETUP_BEEP_CENTER,
ITEM_MODEL_SETUP_USE_JITTER_FILTER,
ITEM_MODEL_SETUP_USB_MODE,
#if defined(PXX2)
ITEM_MODEL_SETUP_REGISTRATION_ID,
#endif
Expand Down Expand Up @@ -538,6 +540,7 @@ void menuModelSetup(event_t event)
uint8_t(NAVIGATION_LINE_BY_LINE | (adcGetInputOffset(ADC_INPUT_FLEX + 1) - 1)), // ITEM_MODEL_SETUP_BEEP_CENTER

0, // ITEM_MODEL_SETUP_USE_JITTER_FILTER
0, // ITEM_MODEL_SETUP_USB_MODE

REGISTRATION_ID_ROWS // ITEM_MODEL_SETUP_REGISTRATION_ID

Expand Down Expand Up @@ -1029,6 +1032,10 @@ void menuModelSetup(event_t event)
g_model.jitterFilter = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_JITTER_FILTER, STR_ADCFILTERVALUES, g_model.jitterFilter, 0, 2, attr, event);
break;

case ITEM_MODEL_SETUP_USB_MODE:
g_model.usbMode = editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_USBMODE, STR_MODEL_USBMODES, g_model.usbMode, USBMODE_GLOBAL, USB_MAX_MODE + 1, attr, event);
break;

case ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL:
lcdDrawTextAlignedLeft(y, STR_INTERNALRF);
break;
Expand Down
10 changes: 10 additions & 0 deletions radio/src/gui/212x64/radio_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ enum MenuRadioSetupItems {
IF_FAI_CHOICE(ITEM_RADIO_SETUP_FAI)
ITEM_RADIO_SETUP_SWITCHES_DELAY,
ITEM_RADIO_SETUP_USB_MODE,
ITEM_RADIO_SETUP_USB_MODE_OVERRIDE,
ITEM_RADIO_SETUP_RX_CHANNEL_ORD,
CASE_ROTARY_ENCODER(ITEM_RADIO_SETUP_ROTARY_ENC_MODE)
ITEM_RADIO_SETUP_STICK_MODE_LABELS,
Expand Down Expand Up @@ -146,6 +147,7 @@ static struct RadioSetupExpandState expandState;
static uint8_t SOUND_ROW(uint8_t value) { return expandState.sound ? value : HIDDEN_ROW; }
static uint8_t SOUND_WARNING_ROW(uint8_t value) { return expandState.sound && isFunctionActive(FUNCTION_VOLUME) ? value : HIDDEN_ROW; }
static uint8_t BACKLIGHT_WARNING_ROW(uint8_t value) { return isFunctionActive(FUNCTION_BACKLIGHT) ? value : HIDDEN_ROW; }
static uint8_t USB_MODE_OVERRIDE_ROW(uint8_t value) { return g_model.usbMode != USBMODE_GLOBAL ? value : HIDDEN_ROW; }

static uint8_t ALARMS_ROW(uint8_t value) { return expandState.alarms ? value : HIDDEN_ROW; }

Expand Down Expand Up @@ -263,6 +265,7 @@ void menuRadioSetup(event_t event)
IF_FAI_CHOICE(0)
0, // switches delay
0, // USB mode
USB_MODE_OVERRIDE_ROW(LABEL(0)), // model USB mode override
0, // RX channels order
CASE_ROTARY_ENCODER(0) // Invert rotary encoder
LABEL(TX_MODE),
Expand Down Expand Up @@ -790,6 +793,13 @@ void menuRadioSetup(event_t event)
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_RADIO_SETUP_USB_MODE_OVERRIDE: {
std::string s(STR_MODEL);
s += " - ";
s += STR_MODEL_USBMODES[g_model.usbMode];
lcdDrawText(LCD_W - MENUS_SCROLLBAR_WIDTH, y, s.c_str(), RIGHT);
} break;

case ITEM_RADIO_SETUP_RX_CHANNEL_ORD:
lcdDrawTextAlignedLeft(y, STR_DEF_CHAN_ORD); // RAET->AETR
{
Expand Down
8 changes: 8 additions & 0 deletions radio/src/gui/colorlcd/model/model_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
#include "filechoice.h"
#include "getset_helpers.h"
#include "hal/adc_driver.h"
#include "hal/usb_driver.h"
#include "menu.h"
#include "model_heli.h"
#include "module_setup.h"
Expand Down Expand Up @@ -264,6 +265,13 @@ const static SetupLineDef otherPageSetupLines[] = {
GET_SET_DEFAULT(g_model.jitterFilter));
}
},
{
STR_DEF(STR_USBMODE),
[](Window* parent, coord_t x, coord_t y) {
new Choice(parent, {x, y, 0, 0}, STR_MODEL_USBMODES, USBMODE_GLOBAL,
USB_MAX_MODE + 1, GET_SET_DEFAULT(g_model.usbMode));
}
},
{
STR_DEF(STR_BEEPCTR), [](Window* parent, coord_t x, coord_t y) {}
},
Expand Down
7 changes: 7 additions & 0 deletions radio/src/gui/colorlcd/radio/radio_hardware.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,13 @@ const static SetupLineDef setupLines[] = {
STR_DEF(STR_JITTER_FILTER),
[](Window* parent, coord_t x, coord_t y) {
new ToggleSwitch(parent, {x, y, 0, 0}, GET_SET_INVERTED(g_eeGeneral.noJitterFilter));
if (g_model.jitterFilter != OVERRIDE_GLOBAL) {
std::string s(STR_MODEL);
s += " - ";
s += STR_ADCFILTERVALUES[g_model.jitterFilter];
new StaticText(parent, {x + ToggleSwitch::TOGGLE_W + PAD_MEDIUM, y + PAD_SMALL + 1, 0, 0},
s.c_str(), COLOR_THEME_SECONDARY1_INDEX);
}
}
},
#if defined(AUDIO_MUTE_GPIO)
Expand Down
Loading
Loading