diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index 769661e81..2a01a0b63 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -165,13 +165,13 @@ void title(const char * s); #define SUBMENU_NOTITLE(lines_count, ...) \ MENU_TAB(__VA_ARGS__); \ - check(event, 0, nullptr, 0, mstate_tab, DIM(mstate_tab)-1, (lines_count)-HEADER_LINE); + check(event, 0, nullptr, 0, mstate_tab, DIM(mstate_tab)-1, (lines_count)-HEADER_LINE) #define SIMPLE_MENU_NOTITLE(tab, menu, lines_count) \ - check_simple(event, menu, tab, DIM(tab), (lines_count)-HEADER_LINE); + check_simple(event, menu, tab, DIM(tab), (lines_count)-HEADER_LINE) #define SIMPLE_SUBMENU_NOTITLE(lines_count) \ - check_submenu_simple(event, (lines_count)-HEADER_LINE); + check_submenu_simple(event, (lines_count)-HEADER_LINE) #define SUBMENU(name, lines_count, ...) \ MENU_TAB(__VA_ARGS__); \ diff --git a/radio/src/gui/common/stdlcd/model_receiver_options.cpp b/radio/src/gui/common/stdlcd/model_receiver_options.cpp index 7d1be30bd..7950104a3 100644 --- a/radio/src/gui/common/stdlcd/model_receiver_options.cpp +++ b/radio/src/gui/common/stdlcd/model_receiver_options.cpp @@ -40,6 +40,7 @@ void onRxOptionsUpdateConfirm(const char * result) enum { ITEM_RECEIVER_TELEMETRY, ITEM_RECEIVER_PWM_RATE, + ITEM_RECEIVER_SPORT_FPORT, ITEM_RECEIVER_PINMAP_FIRST }; @@ -117,8 +118,15 @@ void menuModelReceiverOptions(event_t event) } break; + case ITEM_RECEIVER_SPORT_FPORT: + reusableBuffer.hardwareAndSettings.receiverSettings.fport = editCheckBox(reusableBuffer.hardwareAndSettings.receiverSettings.fport, RECEIVER_OPTIONS_2ND_COLUMN, y, "F.Port", attr, event); + if (attr && checkIncDec_Ret) { + reusableBuffer.hardwareAndSettings.receiverSettings.dirty = true; + } + break; + default: - // Pin + // Pin { uint8_t pin = i - ITEM_RECEIVER_PINMAP_FIRST; if (pin < reusableBuffer.hardwareAndSettings.receiverSettings.outputsCount) { diff --git a/radio/src/pulses/pulses.h b/radio/src/pulses/pulses.h index a3d581bc4..365761b1b 100644 --- a/radio/src/pulses/pulses.h +++ b/radio/src/pulses/pulses.h @@ -123,6 +123,7 @@ class ReceiverSettings { uint8_t dirty; uint8_t telemetryDisabled; uint8_t pwmRate; + uint8_t fport; uint8_t outputsCount; uint8_t outputsMapping[24]; }; diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index 0fc7a137d..aac50ec9a 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -214,6 +214,8 @@ void Pxx2Pulses::setupReceiverSettingsFrame(uint8_t module) flag1 |= PXX2_RX_SETTINGS_FLAG1_TELEMETRY_DISABLED; if (reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate) flag1 |= PXX2_RX_SETTINGS_FLAG1_FASTPWM; + if (reusableBuffer.hardwareAndSettings.receiverSettings.fport) + flag1 |= PXX2_RX_SETTINGS_FLAG1_FPORT; Pxx2Transport::addByte(flag1); uint8_t outputsCount = min(24, reusableBuffer.hardwareAndSettings.receiverSettings.outputsCount); for (int i = 0; i < outputsCount; i++) { diff --git a/radio/src/pulses/pxx2.h b/radio/src/pulses/pxx2.h index fccb6096f..6ecb0cd4d 100644 --- a/radio/src/pulses/pxx2.h +++ b/radio/src/pulses/pxx2.h @@ -51,6 +51,7 @@ #define PXX2_RX_SETTINGS_FLAG1_TELEMETRY_DISABLED (1 << 7) #define PXX2_RX_SETTINGS_FLAG1_READONLY (1 << 6) #define PXX2_RX_SETTINGS_FLAG1_FASTPWM (1 << 4) +#define PXX2_RX_SETTINGS_FLAG1_FPORT (1 << 3) #define PXX2_TX_SETTINGS_FLAG0_WRITE (1 << 6) #define PXX2_TX_SETTINGS_FLAG1_EXTERNAL_ANTENNA (1 << 3) diff --git a/radio/src/telemetry/frsky_pxx2.cpp b/radio/src/telemetry/frsky_pxx2.cpp index ab605652e..7e3baa78c 100644 --- a/radio/src/telemetry/frsky_pxx2.cpp +++ b/radio/src/telemetry/frsky_pxx2.cpp @@ -88,6 +88,9 @@ void processReceiverSettingsFrame(uint8_t module, uint8_t * frame) return; } + if (frame[4] & PXX2_RX_SETTINGS_FLAG1_FPORT) + reusableBuffer.hardwareAndSettings.receiverSettings.fport = 1; + if (frame[4] & PXX2_RX_SETTINGS_FLAG1_FASTPWM) reusableBuffer.hardwareAndSettings.receiverSettings.pwmRate = 1;