feat(TX16S): User options for AUX1/AUX2 serial port power (ON/OFF)

User controllable serial port power for TX16S
This commit is contained in:
Peter Feerick
2022-04-24 11:53:31 +10:00
committed by GitHub
45 changed files with 206 additions and 88 deletions
@@ -76,7 +76,7 @@ const YamlLookupTable serialPortLut = {
const YamlLookupTable uartModeLut = {
{ GeneralSettings::AUX_SERIAL_OFF, "NONE" },
{ GeneralSettings::AUX_SERIAL_TELE_MIRROR, "TELEMETRY_MIRROR" },
{ GeneralSettings::AUX_SERIAL_TELE_IN, "TELEMETRY" },
{ GeneralSettings::AUX_SERIAL_TELE_IN, "TELEMETRY_IN" },
{ GeneralSettings::AUX_SERIAL_SBUS_TRAINER, "SBUS_TRAINER" },
{ GeneralSettings::AUX_SERIAL_LUA, "LUA" },
{ GeneralSettings::AUX_SERIAL_CLI, "CLI" },
@@ -214,9 +214,10 @@ Node convert<GeneralSettings>::encode(const GeneralSettings& rhs)
Node serialPort;
for (int i = 0; i < GeneralSettings::SP_COUNT; i++) {
if (rhs.serialPort[i] != UART_MODE_NONE) {
if (rhs.serialPort[i] != GeneralSettings::AUX_SERIAL_OFF || rhs.serialPower[i]) {
Node mode = uartModeLut << rhs.serialPort[i];
serialPort[LookupValue(serialPortLut, i)]["mode"] = mode;
serialPort[LookupValue(serialPortLut, i)]["power"] = (int)rhs.serialPower[i];
}
}
if (serialPort && serialPort.IsMap())
@@ -404,11 +405,13 @@ bool convert<GeneralSettings>::decode(const Node& node, GeneralSettings& rhs)
node["varioRepeat"] >> rhs.varioRepeat;
node["backgroundVolume"] >> ioffset_int(rhs.backgroundVolume, 2);
// depreciated v2.7 replaced by serialPort
if (node["auxSerialMode"]) {
node["auxSerialMode"] >> oldUartModeLut >>
rhs.serialPort[GeneralSettings::SP_AUX1];
}
// depreciated v2.7 replaced by serialPort
if (node["aux2SerialMode"]) {
node["aux2SerialMode"] >> oldUartModeLut >>
rhs.serialPort[GeneralSettings::SP_AUX2];
@@ -421,13 +424,23 @@ bool convert<GeneralSettings>::decode(const Node& node, GeneralSettings& rhs)
YAML::Node port_nr = port.first >> serialPortLut;
if (port_nr) {
int p = port_nr.as<int>();
if (p >= 0 && p < GeneralSettings::SP_COUNT && port.second.IsMap())
if (p >= 0 && p < GeneralSettings::SP_COUNT && port.second.IsMap()) {
port.second["mode"] >> uartModeLut >> rhs.serialPort[p];
// introduced v2.8
Node port_pwr = port.second["power"];
if (port_pwr && port_pwr.IsScalar()) {
try {
int pwr = port_pwr.as<int>();
if (pwr == 0 || pwr == 1)
rhs.serialPower[p] = pwr;
} catch(...) {}
}
}
}
}
}
}
node["antennaMode"] >> antennaModeLut >> rhs.antennaMode;
node["backlightColor"] >> rhs.backlightColor;
node["pwrOnSpeed"] >> rhs.pwrOnSpeed;
+2 -1
View File
@@ -168,7 +168,8 @@ enum Capability {
TopBarZones,
HasModelsList,
HasFlySkyGimbals,
RotaryEncoderNavigation
RotaryEncoderNavigation,
HasSoftwareSerialPower
};
class EEPROMInterface
@@ -243,6 +243,7 @@ class GeneralSettings {
unsigned int mavbaud;
unsigned int switchUnlockStates;
unsigned int serialPort[SP_COUNT];
bool serialPower[SP_COUNT];
int antennaMode;
unsigned int backlightColor;
CustomFunctionData customFn[CPN_MAX_SPECIAL_FUNCTIONS];
@@ -772,6 +772,8 @@ int OpenTxFirmware::getCapability(::Capability capability)
IS_TARANIS_X9LITE(board) || IS_RADIOMASTER_TX12(board) ||
IS_RADIOMASTER_ZORRO(board) || IS_RADIOMASTER_TX16S(board) ||
IS_JUMPER_T18(board));
case HasSoftwareSerialPower:
return IS_RADIOMASTER_TX16S(board);
default:
return 0;
}
+23 -9
View File
@@ -219,32 +219,46 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings
ExclusiveComboGroup *exclGroup = new ExclusiveComboGroup(
this, [=](const QVariant &value) { return value == 0; });
addSection(tr("Serial port"), row);
if (firmware->getCapability(HasAuxSerialMode)) {
QString lbl = "Serial Port";
if (IS_RADIOMASTER_TX16S(board))
lbl.append(" (TTL)");
QString lbl = "AUX1";
addLabel(tr("%1").arg(lbl), row, 0);
AutoComboBox *serialPortMode = new AutoComboBox(this);
serialPortMode->setModel(editorItemModels->getItemModel(auxmodelid));
serialPortMode->setField(generalSettings.serialPort[GeneralSettings::SP_AUX1]);
exclGroup->addCombo(serialPortMode);
addParams(row, serialPortMode);
AutoCheckBox *serialPortPower = new AutoCheckBox(this);
serialPortPower->setField(generalSettings.serialPower[GeneralSettings::SP_AUX1], this);
serialPortPower->setText(tr("Power"));
addParams(row, serialPortMode, serialPortPower);
if (!firmware->getCapability(HasSoftwareSerialPower))
serialPortPower->setVisible(false);
}
if (firmware->getCapability(HasAux2SerialMode)) {
QString lbl = "Serial Port 2";
if (IS_RADIOMASTER_TX16S(board))
lbl.append(" (TTL)");
QString lbl = "AUX2";
addLabel(tr("%1").arg(lbl), row, 0);
AutoComboBox *serialPortMode = new AutoComboBox(this);
serialPortMode->setModel(editorItemModels->getItemModel(auxmodelid));
serialPortMode->setField(generalSettings.serialPort[GeneralSettings::SP_AUX2]);
exclGroup->addCombo(serialPortMode);
addParams(row, serialPortMode);
AutoCheckBox *serialPortPower = new AutoCheckBox(this);
serialPortPower->setField(generalSettings.serialPower[GeneralSettings::SP_AUX2], this);
serialPortPower->setText(tr("Power"));
addParams(row, serialPortMode, serialPortPower);
if (!firmware->getCapability(HasSoftwareSerialPower))
serialPortPower->setVisible(false);
}
if (firmware->getCapability(HasVCPSerialMode)) {
addLabel(tr("Serial Port VCP"), row, 0);
addLabel(tr("VCP"), row, 0);
AutoComboBox *serialPortMode = new AutoComboBox(this);
serialPortMode->setModel(editorItemModels->getItemModel(vcpmodelid));
serialPortMode->setField(generalSettings.serialPort[GeneralSettings::SP_VCP]);
+9 -9
View File
@@ -116,33 +116,33 @@ static inline void check_struct()
CHKSIZE(TrainerData, 16);
#if defined(PCBXLITES)
CHKSIZE(RadioData, 859);
CHKSIZE(RadioData, 861);
CHKSIZE(ModelData, 6161);
#elif defined(PCBXLITE)
CHKSIZE(RadioData, 857);
CHKSIZE(RadioData, 859);
CHKSIZE(ModelData, 6161);
#elif defined(RADIO_TPRO)
CHKSIZE(RadioData, 840);
CHKSIZE(RadioData, 842);
CHKSIZE(ModelData, 6186);
#elif defined(PCBX7)
CHKSIZE(RadioData, 863);
CHKSIZE(RadioData, 865);
CHKSIZE(ModelData, 6161);
#elif defined(PCBX9E)
CHKSIZE(RadioData, 953);
CHKSIZE(RadioData, 955);
CHKSIZE(ModelData, 6613);
#elif defined(PCBX9D) || defined(PCBX9DP)
CHKSIZE(RadioData, 895);
CHKSIZE(RadioData, 897);
CHKSIZE(ModelData, 6605);
#elif defined(PCBHORUS)
#if defined(PCBX10)
CHKSIZE(RadioData, 919);
CHKSIZE(RadioData, 921);
CHKSIZE(ModelData, 11025);
#else
CHKSIZE(RadioData, 901);
CHKSIZE(RadioData, 903);
CHKSIZE(ModelData, 11023);
#endif
#elif defined(PCBNV14)
CHKSIZE(RadioData, 849);
CHKSIZE(RadioData, 851);
CHKSIZE(ModelData, 10839);
#endif
+2 -1
View File
@@ -28,6 +28,7 @@
#include "definitions.h"
#include "opentx_types.h"
#include "globals.h"
#include "serial.h"
#if defined(PCBTARANIS)
#define N_TARANIS_FIELD(x)
@@ -902,7 +903,7 @@ PACK(struct RadioData {
CUST_ATTR(auxSerialMode, r_serialMode, nullptr);
CUST_ATTR(aux2SerialMode, r_serialMode, nullptr);
NOBACKUP(uint16_t serialPort ARRAY(STORAGE_SERIAL_PORTS,struct_serialConfig,nullptr));
NOBACKUP(uint32_t serialPort ARRAY(SERIAL_CONF_BITS_PER_PORT,struct_serialConfig,nullptr));
EXTRA_GENERAL_FIELDS
+16
View File
@@ -235,6 +235,22 @@ class SerialConfigWindow : public FormGroup
aux->setAvailableHandler(
[=](int value) { return isSerialModeAvailable(port_nr, value); });
grid.nextLine();
#if defined(SWSERIALPOWER)
if (port_nr < SP_VCP)
{
new StaticText(this, grid.getLabelSlot(true), STR_AUX_SERIAL_PORT_POWER, 0, COLOR_THEME_PRIMARY1);
new CheckBox(
this, grid.getFieldSlot(1, 0),
[=] { return serialGetPower(port_nr); },
[=](int8_t newValue) {
serialSetPower(port_nr, (bool)newValue);
SET_DIRTY();
}
);
grid.nextLine();
}
#endif
}
if (display_ttl_warning) {
-2
View File
@@ -23,8 +23,6 @@
#include "serial_driver.h"
typedef void etx_pwr_driver;
typedef struct {
const char* name;
const etx_serial_driver_t* uart;
+53 -18
View File
@@ -86,14 +86,27 @@ int8_t getSerialPortMode(uint8_t port_nr)
#if !defined(BOOT)
if (port_nr < MAX_SERIAL_PORTS) {
auto cfg = g_eeGeneral.serialPort;
cfg >>= port_nr * 4; // 4 bits per port
return cfg & 0xF;
cfg >>= port_nr * SERIAL_CONF_BITS_PER_PORT;
return cfg & SERIAL_CONF_MODE_MASK;
}
#endif
return UART_MODE_NONE;
}
static bool getSerialPower(uint8_t port_nr)
{
#if !defined(BOOT)
if (port_nr < MAX_SERIAL_PORTS) {
auto cfg = g_eeGeneral.serialPort;
cfg >>= (port_nr * SERIAL_CONF_BITS_PER_PORT);
return cfg & (1 << SERIAL_CONF_POWER_BIT);
}
#endif
return false;
}
struct SerialPortState
{
uint8_t mode;
@@ -189,7 +202,7 @@ static void serialSetCallBacks(int mode, void* ctx, const etx_serial_port_t* por
}
}
static void serialSetupPort(int mode, etx_serial_init& params, bool& power_required)
static void serialSetupPort(int mode, etx_serial_init& params)
{
switch (mode) {
@@ -203,7 +216,6 @@ static void serialSetupPort(int mode, etx_serial_init& params, bool& power_requi
#if !defined(BOOT)
case UART_MODE_TELEMETRY_MIRROR:
// TODO: query telemetry baudrate / add setting for module
power_required = true;
#if defined(CROSSFIRE)
if (modelTelemetryProtocol() == PROTOCOL_TELEMETRY_CROSSFIRE) {
params.baudrate = CROSSFIRE_TELEM_MIRROR_BAUDRATE;
@@ -217,7 +229,6 @@ static void serialSetupPort(int mode, etx_serial_init& params, bool& power_requi
if (modelTelemetryProtocol() == PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY) {
params.baudrate = FRSKY_D_BAUDRATE;
params.rx_enable = true;
power_required = true;
}
break;
@@ -227,14 +238,12 @@ static void serialSetupPort(int mode, etx_serial_init& params, bool& power_requi
params.parity = ETX_Parity_Even;
params.stop_bits = ETX_StopBits_Two;
params.rx_enable = true;
power_required = true;
break;
#if defined(LUA)
case UART_MODE_LUA:
params.baudrate = LUA_DEFAULT_BAUDRATE;
params.rx_enable = true;
power_required = true;
break;
#endif
@@ -242,7 +251,6 @@ static void serialSetupPort(int mode, etx_serial_init& params, bool& power_requi
case UART_MODE_GPS:
params.baudrate = GPS_USART_BAUDRATE;
params.rx_enable = true;
power_required = true;
break;
#endif
#endif
@@ -263,6 +271,26 @@ const etx_serial_port_t* serialGetPort(uint8_t port_nr)
return port;
}
static void serialSetPowerState(uint8_t port_nr)
{
const etx_serial_port_t* port = serialGetPort(port_nr);
if (!port) return;
if (port->set_pwr) {
port->set_pwr(getSerialPower(port_nr));
}
}
void serialSetPower(uint8_t port_nr, bool enabled)
{
if (port_nr >= MAX_SERIAL_PORTS) return;
uint32_t pwr = (enabled ? 1 : 0) << SERIAL_CONF_POWER_BIT;
uint32_t pwr_mask = (1 << SERIAL_CONF_POWER_BIT) << port_nr * SERIAL_CONF_BITS_PER_PORT;
g_eeGeneral.serialPort = (g_eeGeneral.serialPort & ~pwr_mask) |
(pwr << port_nr * SERIAL_CONF_BITS_PER_PORT);
serialSetPowerState(port_nr);
}
void serialInit(uint8_t port_nr, int mode)
{
@@ -292,9 +320,14 @@ void serialInit(uint8_t port_nr, int mode)
.rx_enable = false,
};
bool power_required = false;
serialSetupPort(mode, params, power_required);
serialSetupPort(mode, params);
#if defined(SWSERIALPOWER)
// Set power on/off
if (port_nr < SP_VCP)
serialSetPowerState(port_nr);
#endif
if (params.baudrate != 0) {
state->mode = mode;
state->port = port;
@@ -302,11 +335,6 @@ void serialInit(uint8_t port_nr, int mode)
if (port) {
if (port->uart && port->uart->init)
state->usart_ctx = port->uart->init(&params);
// Set power on/off
if (port->set_pwr) {
port->set_pwr(power_required);
}
}
// Update callbacks once the port is setup
@@ -329,12 +357,19 @@ int serialGetMode(uint8_t port_nr)
return getSerialPortMode(port_nr);
}
bool serialGetPower(uint8_t port_nr)
{
return getSerialPower(port_nr);
}
void serialSetMode(uint8_t port_nr, int mode)
{
if (port_nr >= MAX_SERIAL_PORTS) return;
uint16_t m = mode & 0xF;
uint16_t m = mode & SERIAL_CONF_MODE_MASK;
g_eeGeneral.serialPort =
(g_eeGeneral.serialPort & ~(0xF << port_nr * 4)) | (m << port_nr * 4);
(g_eeGeneral.serialPort &
~(SERIAL_CONF_MODE_MASK << port_nr * SERIAL_CONF_BITS_PER_PORT)) |
(m << port_nr * SERIAL_CONF_BITS_PER_PORT);
}
// uint8_t serialTracesEnabled(int port_nr)
+6
View File
@@ -25,9 +25,15 @@
#include <stdint.h>
#include "hal/serial_port.h"
#define SERIAL_CONF_BITS_PER_PORT 8 /* configuration uses 1 byte per serial port */
#define SERIAL_CONF_MODE_MASK 0x0F /* lower 4 bits for mode */
#define SERIAL_CONF_POWER_BIT 7 /* MSBit of the configuration byte */
const etx_serial_port_t* serialGetPort(uint8_t port_nr);
int serialGetMode(uint8_t port_nr);
void serialSetMode(uint8_t port_nr, int mode);
bool serialGetPower(uint8_t port_nr);
void serialSetPower(uint8_t port_nr, bool enabled);
void initSerialPorts();
void serialInit(uint8_t port_nr, int mode);
@@ -1854,6 +1854,8 @@ static bool port_write(void* user, yaml_writer_func wf, void* opaque)
static const struct YamlNode struct_serialConfig[] = {
YAML_IDX_CUST( "port", port_read, port_write),
YAML_ENUM( "mode", 4, enum_UartModes),
YAML_PADDING( 3 ),
YAML_UNSIGNED( "power", 1 ),
YAML_END
};
@@ -1876,6 +1878,7 @@ static void r_serialMode(void* user, uint8_t* data, uint32_t bitoffs,
auto m = yaml_parse_enum(yaml_conv_220::enum_UartModes, val, val_len);
if (!m) return;
auto serialPort = reinterpret_cast<uint16_t*>(data);
*serialPort = (*serialPort & ~(0xF << port_nr * 4)) | (m << port_nr * 4);
auto serialPort = reinterpret_cast<uint32_t*>(data);
*serialPort = (*serialPort & ~(0xF << port_nr * SERIAL_CONF_BITS_PER_PORT)) |
(m << port_nr * SERIAL_CONF_BITS_PER_PORT);
}
@@ -423,7 +423,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 72, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid),
YAML_ARRAY("switchConfig", 2, 16, struct_switchConfig, nullptr),
YAML_ARRAY("potsConfig", 2, 8, struct_potConfig, nullptr),
@@ -439,7 +439,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_UNSIGNED( "stickDeadZone", 3 ),
YAML_PADDING( 2 ),
YAML_PADDING( 3 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -394,7 +394,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -407,7 +407,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -394,7 +394,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -407,7 +407,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -394,7 +394,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -407,7 +407,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -402,7 +402,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -413,7 +413,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_PADDING( 144 ),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -394,7 +394,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -407,7 +407,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -444,7 +444,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 72, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid),
YAML_ARRAY("switchConfig", 2, 16, struct_switchConfig, nullptr),
YAML_ARRAY("potsConfig", 2, 8, struct_potConfig, nullptr),
@@ -459,7 +459,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRUCT("themeData", 480, struct_OpenTxTheme__PersistentData, NULL),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -442,7 +442,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 72, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid),
YAML_ARRAY("switchConfig", 2, 16, struct_switchConfig, nullptr),
YAML_ARRAY("potsConfig", 2, 8, struct_potConfig, nullptr),
@@ -457,7 +457,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRUCT("themeData", 480, struct_OpenTxTheme__PersistentData, NULL),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -394,7 +394,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -407,7 +407,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -401,7 +401,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -414,7 +414,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -440,7 +440,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -453,7 +453,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -381,7 +381,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -392,7 +392,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_PADDING( 120 ),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -389,7 +389,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -402,7 +402,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -386,7 +386,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -399,7 +399,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -388,7 +388,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -403,7 +403,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_SIGNED( "gyroMax", 8 ),
YAML_SIGNED( "gyroOffset", 8 ),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -394,7 +394,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active),
YAML_CUSTOM("auxSerialMode",r_serialMode,nullptr),
YAML_CUSTOM("aux2SerialMode",r_serialMode,nullptr),
YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr),
YAML_ARRAY("serialPort", 8, 4, struct_serialConfig, nullptr),
YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr),
YAML_PADDING( 4 ),
YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr),
@@ -407,7 +407,7 @@ static const struct YamlNode struct_RadioData[] = {
YAML_STRING("bluetoothName", 10),
YAML_STRING("ownerRegistrationID", 8),
YAML_SIGNED( "uartSampleMode", 2 ),
YAML_PADDING( 5 ),
YAML_PADDING( 6 ),
YAML_END
};
static const struct YamlNode struct_unsigned_8[] = {
@@ -219,6 +219,17 @@ int main()
pwrInit();
keysInit();
#if defined(SWSERIALPOWER)
#if defined(AUX_SERIAL)
void set_aux_pwr(uint8_t on);
set_aux_pwr(0);
#endif
#if defined(AUX2_SERIAL)
void set_aux2_pwr(uint8_t on);
set_aux2_pwr(0);
#endif
#endif
// wait a bit for the inputs to stabilize...
if (!WAS_RESET_BY_WATCHDOG_OR_SOFTWARE()) {
for (uint32_t i = 0; i < 150000; i++) {
+5
View File
@@ -99,6 +99,7 @@ if (PCB STREQUAL X10)
option(BLUETOOTH "Support for bluetooth module" OFF)
option(INTERNAL_GPS "Support for internal ublox GPS" ON)
set(HARDWARE_TOUCH YES)
set(SWSERIALPOWER YES)
set(USB_CHARGER YES)
set(DEFAULT_THEME "DARKBLUE")
add_definitions(-DMANUFACTURER_RADIOMASTER)
@@ -233,6 +234,10 @@ if(HARDWARE_TOUCH)
set(SOFTWARE_KEYBOARD ON)
endif()
if(SWSERIALPOWER)
add_definitions(-DSWSERIALPOWER)
endif()
if(USB_CHARGER)
set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} usb_charger_driver.cpp)
add_definitions(-DUSB_CHARGER)
+1
View File
@@ -744,6 +744,7 @@ const char STR_SCALE[] = TR_SCALE;
const char STR_VIEW_CHANNELS[] = TR_VIEW_CHANNELS;
const char STR_AUX_SERIAL_MODE[] = TR_AUX_SERIAL_MODE;
const char STR_AUX2_SERIAL_MODE[] = TR_AUX2_SERIAL_MODE;
const char STR_AUX_SERIAL_PORT_POWER[] = TR_AUX_SERIAL_PORT_POWER;
const char STR_THROTTLE_LABEL[] = TR_THROTTLE_LABEL;
const char STR_SCRIPT[] = TR_SCRIPT;
const char STR_INPUTS[] = TR_INPUTS;
+1 -2
View File
@@ -115,7 +115,6 @@ extern const char STR_VTRIMINC[];
extern const char STR_VDISPLAYTRIMS[];
extern const char STR_RETA123[];
extern const char STR_VBLMODE[];
extern const char STR_VCURVEFUNC[];
extern const char STR_VMLTPX[];
@@ -240,7 +239,6 @@ extern const char STR_TTRIM_SW[];
extern const char STR_BEEPCTR[];
extern const char STR_USE_GLOBAL_FUNCS[];
extern const char STR_PPMFRAME[];
extern const char STR_REFRESHRATE[];
extern const char STR_MS[];
@@ -1089,6 +1087,7 @@ extern const char STR_VIEW_CHANNELS[];
extern const char STR_POTWARNING[];
extern const char STR_AUX_SERIAL_MODE[];
extern const char STR_AUX2_SERIAL_MODE[];
extern const char STR_AUX_SERIAL_PORT_POWER[];
extern const char STR_THROTTLE_LABEL[];
extern const char STR_SCRIPT[];
extern const char STR_INPUTS[];
+1
View File
@@ -992,6 +992,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS 偏移量")
#define TR_AUX_SERIAL_MODE "串口"
#define TR_AUX2_SERIAL_MODE "串口 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "脚本"
#define TR_INPUTS "输入"
#define TR_OUTPUTS "输出"
+1
View File
@@ -1037,6 +1037,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Ofset")
#define TR_AUX_SERIAL_MODE "Seriový port"
#define TR_AUX2_SERIAL_MODE "Seriový port 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "Skript"
#define TR_INPUTS "Vstupy"
#define TR_OUTPUTS "Výstupy"
+1
View File
@@ -1043,6 +1043,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS-Ofs", INDENT "FAS-Offset")
#define TR_AUX_SERIAL_MODE "Serieller Port"
#define TR_AUX2_SERIAL_MODE "Serieller Port 2"
#define TR_AUX_SERIAL_PORT_POWER "Versorgung"
#define TR_SCRIPT "Lua-Skript"
#define TR_INPUTS "Eingaben"
#define TR_OUTPUTS "Ausgaben"
+1
View File
@@ -1043,6 +1043,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS offset")
#define TR_AUX_SERIAL_MODE "Serial port"
#define TR_AUX2_SERIAL_MODE "Serial port 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "Script"
#define TR_INPUTS "Inputs"
#define TR_OUTPUTS "Outputs"
+1
View File
@@ -1044,6 +1044,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
#define TR_AUX_SERIAL_MODE "Puerto serie"
#define TR_AUX2_SERIAL_MODE "Puerto serie 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "Script"
#define TR_INPUTS "Entradas"
#define TR_OUTPUTS "Salidas"
+8 -7
View File
@@ -1055,13 +1055,14 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
#define TR_AUX_SERIAL_MODE "Serial port"
#define TR_AUX2_SERIAL_MODE "Serial port 2"
#define TR_SCRIPT "Script"
#define TR_INPUTS "Inputs"
#define TR_OUTPUTS "Outputs"
#define STR_EEBACKUP "Backup the EEPROM"
#define STR_FACTORYRESET "Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TOO_MANY_LUA_SCRIPTS "Too many Lua scripts!"
#define TR_AUX_SERIAL_PORT_POWER "Virta"
#define TR_SCRIPT "Script"
#define TR_INPUTS "Inputs"
#define TR_OUTPUTS "Outputs"
#define STR_EEBACKUP "Backup the EEPROM"
#define STR_FACTORYRESET "Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TOO_MANY_LUA_SCRIPTS "Too many Lua scripts!"
#define TR_SPORT_UPDATE_POWER_MODE "SP Power"
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
+1
View File
@@ -1059,6 +1059,7 @@
#define TR_FAS_OFFSET TR(INDENT "Corr FAS", INDENT "Correction FAS")
#define TR_AUX_SERIAL_MODE "Port série"
#define TR_AUX2_SERIAL_MODE "Port série 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "Script"
#define TR_INPUTS "Entrées"
#define TR_OUTPUTS "Sorties"
+1
View File
@@ -1062,6 +1062,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
#define TR_AUX_SERIAL_MODE "Porta Seriale"
#define TR_AUX2_SERIAL_MODE "Porta Seriale 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "Script"
#define TR_INPUTS "Ingresso"
#define TR_OUTPUTS "Uscita"
+1 -1
View File
@@ -67,7 +67,6 @@
#define LEN_SWTYPES "\006"
#define TR_SWTYPES "Geen\0 ""Wissel""2POS\0 ""3POS\0"
#define LEN_POTTYPES TR("\013","\021")
#define TR_POTTYPES TR("None\0 ""Pot w. det\0""Multipos\0 ""Pot\0 ", "Geen\0 ""Pot met Klik\0 ""Standenschakelaar""Pot zonder Klik\0 ")
@@ -1046,6 +1045,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
#define TR_AUX_SERIAL_MODE "Seriele poort"
#define TR_AUX2_SERIAL_MODE "Seriele poort 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "Script"
#define TR_INPUTS "Inputs"
#define TR_OUTPUTS "Outputs"
+1
View File
@@ -1058,6 +1058,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
#define TR_AUX_SERIAL_MODE "Port szreg."
#define TR_AUX2_SERIAL_MODE "Port szreg. 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "Skrypt"
#define TR_INPUTS "Wejścia"
#define TR_OUTPUTS "Wyjścia"
+1
View File
@@ -1066,6 +1066,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
#define TR_AUX_SERIAL_MODE "Serial port"
#define TR_AUX2_SERIAL_MODE "Serial port 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "Script"
#define TR_INPUTS "Inputs"
#define TR_OUTPUTS "Outputs"
+1
View File
@@ -1066,6 +1066,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset")
#define TR_AUX_SERIAL_MODE "Serieporten"
#define TR_AUX2_SERIAL_MODE "Serieporten 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "Programkod"
#define TR_INPUTS "Input"
#define TR_OUTPUTS "Outputs"
+1
View File
@@ -992,6 +992,7 @@
#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS 偏移量")
#define TR_AUX_SERIAL_MODE "端口"
#define TR_AUX2_SERIAL_MODE "端口 2"
#define TR_AUX_SERIAL_PORT_POWER "Port power"
#define TR_SCRIPT "腳本"
#define TR_INPUTS "輸入"
#define TR_OUTPUTS "輸出"