1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-26 01:35:21 +03:00

[MULTI] Implement option Value adjustment in Companion (#4459)

* [MULTI] Implement option Value adjustment in Companion

Also refactor ui code to use the same multi table as the radio to make updates easier and consistent

* Fix warnings with gcc 6

* Make the whole thing more C++ like

Using QVector instead of std::vector gives me strange errors.

* Fix gcc warning

* another signedness fix

* Add missing include

* Add Gw008 protocol and move subtype definitions out of the translations

* Add note about struct

* More cleanups

Integrate @mpaperno’s latest ideas about cleaning up
This commit is contained in:
Arne Schwabe 2017-03-02 18:40:31 +01:00 committed by Bertrand Songis
parent 00b2799427
commit 40dae8a8a7
27 changed files with 340 additions and 866 deletions

View file

@ -170,6 +170,7 @@ set(companion_SRCS
radionotfound.cpp
wizarddata.cpp
wizarddialog.cpp
multiprotocols.cpp
)
set(companion_MOC_HDRS

View file

@ -28,6 +28,7 @@
#include "wizarddata.h"
#include "firmwareinterface.h"
#include "macros.h"
#include "multiprotocols.h"
#include <stdio.h>
#include <list>
#include <float.h>
@ -1844,46 +1845,6 @@ SimulatorInterface * getCurrentSimulator()
return NULL;
}
unsigned int getNumSubtypes(MultiModuleRFProtocols type)
{
switch (type) {
case MM_RF_PROTO_HISKY:
case MM_RF_PROTO_SYMAX:
case MM_RF_PROTO_KN:
case MM_RF_PROTO_SLT:
case MM_RF_PROTO_FY326:
case MM_RF_PROTO_BAYANG:
case MM_RF_PROTO_V2X2:
return 2;
case MM_RF_PROTO_Q2X2:
case MM_RF_PROTO_CG023:
return 3;
case MM_RF_PROTO_DSM2:
case MM_RF_PROTO_MT99XX:
case MM_RF_PROTO_HONTAI:
case MM_RF_PROTO_AFHDS2A:
case MM_RF_PROTO_Q303:
return 4;
case MM_RF_PROTO_FLYSKY:
case MM_RF_PROTO_MJXQ:
case MM_RF_PROTO_YD717:
return 5;
case MM_RF_PROTO_FRSKY:
case MM_RF_PROTO_WK_2X01:
return 6;
case MM_RF_PROTO_CX10:
return 8;
default:
return 1;
}
}
void FlightModeData::clear(const int phase)
{
memset(this, 0, sizeof(FlightModeData));

View file

@ -25,6 +25,7 @@
#include "helpers.h"
#include "appdata.h"
#include "modelprinter.h"
#include "multiprotocols.h"
TimerPanel::TimerPanel(QWidget *parent, ModelData & model, TimerData & timer, GeneralSettings & generalSettings, Firmware * firmware, QWidget * prevFocus):
ModelPanel(parent, model, generalSettings, firmware),
@ -157,6 +158,7 @@ void TimerPanel::on_name_editingFinished()
#define MASK_OPEN_DRAIN 64
#define MASK_MULTIMODULE 128
#define MASK_ANTENNA 256
#define MASK_MULTIOPTION 512
quint8 ModulePanel::failsafesValueDisplayType = ModulePanel::FAILSAFE_DISPLAY_PERCENT;
@ -381,6 +383,13 @@ void ModulePanel::update()
break;
case PULSES_MULTIMODULE:
mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER | MASK_MULTIMODULE;
max_rx_num = 15;
if (module.multi.rfProtocol == MM_RF_PROTO_DSM2)
mask |= MASK_CHANNELS_COUNT;
else
module.channelsCount = 16;
if (multiProtocols.getProtocol(module.multi.rfProtocol).optionsstr != nullptr)
mask |= MASK_MULTIOPTION;
break;
case PULSES_OFF:
break;
@ -442,9 +451,11 @@ void ModulePanel::update()
ui->multiProtocol->setCurrentIndex(module.multi.rfProtocol);
ui->label_multiSubType->setVisible(mask & MASK_MULTIMODULE);
ui->multiSubType->setVisible(mask & MASK_MULTIMODULE);
ui->label_option->setVisible(mask & MASK_MULTIOPTION);
ui->optionValue->setVisible(mask & MASK_MULTIOPTION);
if (mask & MASK_MULTIMODULE) {
int numEntries = getNumSubtypes(static_cast<MultiModuleRFProtocols>(module.multi.rfProtocol));
int numEntries = multiProtocols.getProtocol(module.multi.rfProtocol).numSubytes();
if (module.multi.customProto)
numEntries=8;
// Removes extra items
@ -456,6 +467,14 @@ void ModulePanel::update()
ui->multiSubType->addItem(ModelPrinter::printMultiSubType(module.multi.rfProtocol, module.multi.customProto, i), (QVariant) i);
}
}
if (mask & MASK_MULTIOPTION) {
auto pdef = multiProtocols.getProtocol(module.multi.rfProtocol);
ui->optionValue->setMinimum(pdef.getOptionMin());
ui->optionValue->setMaximum(pdef.getOptionMax());
ui->optionValue->setValue(module.multi.optionValue);
ui->label_option->setText(pdef.optionsstr);
}
ui->multiSubType->setCurrentIndex(module.subType);
ui->autoBind->setVisible(mask & MASK_MULTIMODULE);
@ -592,8 +611,8 @@ void ModulePanel::on_multiProtocol_currentIndexChanged(int index)
{
if (!lock) {
lock=true;
module.multi.rfProtocol = index;
unsigned int maxSubTypes = getNumSubtypes(static_cast<MultiModuleRFProtocols>(index));
module.multi.rfProtocol = (unsigned int) index;
unsigned int maxSubTypes = multiProtocols.getProtocol(index).numSubytes();
if (module.multi.customProto)
maxSubTypes=8;
module.subType = std::min(module.subType, maxSubTypes -1);
@ -603,6 +622,12 @@ void ModulePanel::on_multiProtocol_currentIndexChanged(int index)
}
}
void ModulePanel::on_optionValue_editingFinished()
{
module.multi.optionValue = ui->optionValue->value();
emit modified();
}
void ModulePanel::on_multiSubType_currentIndexChanged(int index)
{
if (!lock) {

View file

@ -91,6 +91,7 @@ class ModulePanel : public ModelPanel
void onFailsafePercentChanged(double value);
void onFailsafesDisplayValueTypeChanged(int type);
void updateFailsafe(int channel);
void on_optionValue_editingFinished();
private:
enum FailsafeValueDisplayTypes { FAILSAFE_DISPLAY_PERCENT = 1, FAILSAFE_DISPLAY_USEC = 2 };

View file

@ -274,6 +274,20 @@
</item>
</widget>
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="optionValue">
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_option">
<property name="text">
<string>Option value</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="2">

View file

@ -22,6 +22,7 @@
#include "modelprinter.h"
#include <QPainter>
#include <QFile>
#include "multiprotocols.h"
QString changeColor(const QString & input, const QString & to, const QString & from)
{
@ -62,7 +63,7 @@ QString addFont(const QString & input, const QString & color, const QString & si
if (!face.isEmpty()) {
faceStr = "face='" + face + "'";
}
return "<font " + sizeStr + " " + faceStr + " " + colorStr + ">" + input + "</font>";
return "<font " + sizeStr + " " + faceStr + " " + colorStr + ">" + input + "</font>";
}
QString ModelPrinter::printEEpromSize()
@ -131,7 +132,7 @@ QString ModelPrinter::printMultiRfProtocol(int rfProtocol, bool custom)
static const char *strings[] = {
"FlySky", "Hubsan", "FrSky", "Hisky", "V2x2", "DSM", "Devo", "YD717", "KN", "SymaX", "SLT", "CX10", "CG023",
"Bayang", "ESky", "MT99XX", "MJXQ", "Shenqi", "FY326", "SFHSS", "J6 PRO","FQ777","Assan","Hontai","OLRS",
"FlySky AFHDS2A", "Q2x2", "Q303"
"FlySky AFHDS2A", "Q2x2", "Walkera", "Q303", "GW008"
};
if (custom)
return "Custom - proto " + QString::number(rfProtocol);
@ -139,77 +140,18 @@ QString ModelPrinter::printMultiRfProtocol(int rfProtocol, bool custom)
return CHECK_IN_ARRAY(strings, rfProtocol);
}
QString ModelPrinter::printMultiSubType(int rfProtocol, bool custom, int subType) {
QString ModelPrinter::printMultiSubType(int rfProtocol, bool custom, unsigned int subType) {
/* custom protocols */
static const char *custom_subtype_strings[] = {"Subtype 0", "Subtype 1", "Subtype 2", "Subtype 3", "Subtype 4", "Subtype 5", "Subtype 6", "Subtype 7"};
static const char *flysky_strings[] = {"Standard", "V9x9", "V6x6", "V912", "CX20"};
static const char *frsky_strings[] = {"D16", "D8", "D16 8ch", "V8", "D16 EU-LBT", "D16 EU-LBT 8ch"};
static const char *hisky_strings[] = {"HiSky", "HK310"};
static const char *v2x2_strings[] = {"V2x2", "JXD506"};
static const char *dsm2_strings[] = {"DSM2 22ms", "DSM2 11ms", "DSMX 22ms", "DSMX 11ms"};
static const char *yd717_strings[] = {"YD717", "Skywalker", "Syma X2", "XINXUN", "NIHUI"};
static const char *symax_strings[] = {"Standard", "Syma X5C"};
static const char *slt_strings[] = {"SLT", "Vista"};
static const char *cx10_strings[] = {"Green", "Blue", "DM007", "-", "JC3015a", "JC3015b", "MK33041", "Q242"};
static const char *cg023_strings[] = {"CG023", "YD829", "H3 3D"};
static const char *bayang_strings[] = {"Bayang", "H8S3D"};
static const char *kn_strings[] = {"WLtoys", "FeiLun"};
static const char *mt99_strings[] = {"MT99", "H7", "YZ"};
static const char *mjxq_strings[] = {"WLH08", "X600", "X800", "H26D", "E010"};
static const char *fy326_strings[] = {"FY326", "FY319"};
static const char *hontai_strings[] = {"Standard", "JJRC X1", "X5C1 Clone"};
static const char *afhds2a_strings[] = {"PWM and IBUS", "PPM and IBUS", "PWM and SBUS", "PPM and SBUS"};
static const char *q2x2_strings[] = {"Q222", "Q242", "Q282"};
static const char *walkera_wk2x01_strings[] = {"WK2801", "WK2401", "W6_5_1", "W6_6_1", "W6_HEL", "W6_HEL_I"};
static const char *q303_strings[] = { "Q303", "CX35", "CX10D", "CX10WD"};
if (custom)
return CHECK_IN_ARRAY(custom_subtype_strings, subType);
switch (rfProtocol) {
case MM_RF_PROTO_FLYSKY:
return CHECK_IN_ARRAY(flysky_strings, subType);
case MM_RF_PROTO_FRSKY:
return CHECK_IN_ARRAY(frsky_strings, subType);
case MM_RF_PROTO_HISKY:
return CHECK_IN_ARRAY(hisky_strings, subType);
case MM_RF_PROTO_DSM2:
return CHECK_IN_ARRAY(dsm2_strings, subType);
case MM_RF_PROTO_V2X2:
return CHECK_IN_ARRAY(v2x2_strings, subType);
case MM_RF_PROTO_YD717:
return CHECK_IN_ARRAY(yd717_strings, subType);
case MM_RF_PROTO_SYMAX:
return CHECK_IN_ARRAY(symax_strings, subType);
case MM_RF_PROTO_SLT:
return CHECK_IN_ARRAY(slt_strings, subType);
case MM_RF_PROTO_CX10:
return CHECK_IN_ARRAY(cx10_strings, subType);
case MM_RF_PROTO_CG023:
return CHECK_IN_ARRAY(cg023_strings, subType);
case MM_RF_PROTO_BAYANG:
return CHECK_IN_ARRAY(bayang_strings, subType);
case MM_RF_PROTO_KN:
return CHECK_IN_ARRAY(kn_strings, subType);
case MM_RF_PROTO_MT99XX:
return CHECK_IN_ARRAY(mt99_strings, subType);
case MM_RF_PROTO_MJXQ:
return CHECK_IN_ARRAY(mjxq_strings, subType);
case MM_RF_PROTO_FY326:
return CHECK_IN_ARRAY(fy326_strings, subType);
case MM_RF_PROTO_HONTAI:
return CHECK_IN_ARRAY(hontai_strings, subType);
case MM_RF_PROTO_AFHDS2A:
return CHECK_IN_ARRAY(afhds2a_strings, subType);
case MM_RF_PROTO_Q2X2:
return CHECK_IN_ARRAY(q2x2_strings, subType);
case MM_RF_PROTO_WK_2X01:
return CHECK_IN_ARRAY(walkera_wk2x01_strings, subType);
case MM_RF_PROTO_Q303:
return CHECK_IN_ARRAY(q303_strings, subType);
default:
return "DEFAULT";
}
if (custom)
rfProtocol = MM_RF_CUSTOM_SELECTED;
Multiprotocols::MultiProtocolDefinition pdef = multiProtocols.getProtocol(rfProtocol);
if (subType < (unsigned int) pdef.subTypeStrings.size())
return pdef.subTypeStrings[subType];
else
return "???";
}
QString ModelPrinter::printModule(int idx) {
@ -316,7 +258,7 @@ QString ModelPrinter::printTimer(int idx)
QString ModelPrinter::printTimer(const TimerData & timer)
{
QStringList result;
if (firmware->getCapability(TimersName) && timer.name[0])
if (firmware->getCapability(TimersName) && timer.name[0])
result += tr("Name(%1)").arg(timer.name);
result += QString("%1:%2").arg(timer.val/60, 2, 10, QChar('0')).arg(timer.val%60, 2, 10, QChar('0'));
result += timer.mode.toString();
@ -337,9 +279,9 @@ QString ModelPrinter::printTrim(int flightModeIndex, int stickIndex)
{
const FlightModeData & fm = model.flightModeData[flightModeIndex];
if (fm.trimMode[stickIndex] == -1) {
if (fm.trimMode[stickIndex] == -1) {
return tr("Off");
}
}
else {
if (fm.trimRef[stickIndex] == flightModeIndex) {
return QString("%1").arg(fm.trim[stickIndex]);
@ -349,7 +291,7 @@ QString ModelPrinter::printTrim(int flightModeIndex, int stickIndex)
return tr("FM%1").arg(fm.trimRef[stickIndex]);
}
else {
if (fm.trim[stickIndex] < 0)
if (fm.trim[stickIndex] < 0)
return tr("FM%1%2").arg(fm.trimRef[stickIndex]).arg(fm.trim[stickIndex]);
else
return tr("FM%1+%2").arg(fm.trimRef[stickIndex]).arg(fm.trim[stickIndex]);
@ -441,7 +383,7 @@ QString ModelPrinter::printInputLine(const ExpoData & input)
if (input.offset)
str += " " + tr("Offset(%1)").arg(getGVarString(input.offset)).toHtmlEscaped();
if (firmware->getCapability(HasExpoNames) && input.name[0])
if (firmware->getCapability(HasExpoNames) && input.name[0])
str += QString(" [%1]").arg(input.name).toHtmlEscaped();
return str;
@ -516,7 +458,7 @@ QString ModelPrinter::printMixerLine(const MixData & mix, bool showMultiplex, in
str += " " + tr("Slow(u%1:d%2)").arg((double)mix.speedUp/scale).arg((double)mix.speedDown/scale).toHtmlEscaped();
if (mix.mixWarn)
str += " " + tr("Warn(%1)").arg(mix.mixWarn).toHtmlEscaped();
if (firmware->getCapability(HasMixerNames) && mix.name[0])
if (firmware->getCapability(HasMixerNames) && mix.name[0])
str += QString(" [%1]").arg(mix.name).toHtmlEscaped();
return str;
}

View file

@ -59,7 +59,7 @@ class ModelPrinter: public QObject
QString printThrottleTrimMode();
static QString printModuleProtocol(unsigned int protocol);
static QString printMultiRfProtocol(int rfProtocol, bool custom);
static QString printMultiSubType(int rfProtocol, bool custom, int subType);
static QString printMultiSubType(int rfProtocol, bool custom, unsigned int subType);
QString printFlightModeSwitch(int index);
QString printFlightModeName(int index);
QString printFlightModes(unsigned int flightModes);

View file

@ -0,0 +1,119 @@
/*
* 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.
*/
#include <QObject>
#include "multiprotocols.h"
#include "radiodata.h"
#define tr QObject::tr
static const QStringList STR_SUBTYPE_CUSTOM ({tr("Subtype 0"), tr("Subtype 1"), tr("Subtype 2"), tr("Subtype 3"),
tr("Subtype 4"), tr("Subtype 5"), tr("Subtype 6"), tr("Subtype 7")});
static const QStringList STR_SUBTYPE_FLYSKY {"Standard", "V9x9", "V6x6", "V912", "CX20"};
static const QStringList STR_SUBTYPE_FRSKY {"D16", "D8", "D16 8ch", "V8", "D16 EU-LBT", "D16 EU-LBT 8ch"};
static const QStringList STR_SUBTYPE_HISKY {"HiSky", "HK310"};
static const QStringList STR_SUBTYPE_V2X2 {"V2x2", "JXD506"};
static const QStringList STR_SUBTYPE_DSM {"DSM2 22ms", "DSM2 11ms", "DSMX 22ms", "DSMX 11ms"};
static const QStringList STR_SUBTYPE_YD717 {"YD717", "Skywalker", "Syma X2", "XINXUN", "NIHUI"};
static const QStringList STR_SUBTYPE_SYMAX {"Standard", "Syma X5C"};
static const QStringList STR_SUBTYPE_SLT {"SLT", "Vista"};
static const QStringList STR_SUBTYPE_CX10 {"Green", "Blue", "DM007", "-", "JC3015a", "JC3015b", "MK33041", "Q242"};
static const QStringList STR_SUBTYPE_CG023 {"CG023", "YD829", "H3 3D"};
static const QStringList STR_SUBTYPE_BAYANG {"Bayang", "H8S3D"};
static const QStringList STR_SUBTYPE_KN {"WLtoys", "FeiLun"};
static const QStringList STR_SUBTYPE_MT99 {"MT99", "H7", "YZ", "LS", "FY805"};
static const QStringList STR_SUBTYPE_MJXQ {"WLH08", "X600", "X800", "H26D", "E010", "H26WH"};
static const QStringList STR_SUBTYPE_FY326 {"FY326", "FY319"};
static const QStringList STR_SUBTYPE_HONTAI {"Standard", "JJRC X1", "X5C1 Clone"};
static const QStringList STR_SUBTYPE_AFHDS2A {"PWM and IBUS", "PPM and IBUS", "PWM and SBUS", "PPM and SBUS"};
static const QStringList STR_SUBTYPE_Q2X2 {"Q222", "Q242", "Q282"};
static const QStringList STR_SUBTYPE_WK2x01 {"WK2801", "WK2401", "W6_5_1", "W6_6_1", "W6_HEL", "W6_HEL_I"};
static const QStringList STR_SUBTYPE_Q303 {"Q303", "CX35", "CX10D", "CX10WD"};
static const QStringList NO_SUBTYPE {tr("DEFAULT")};
static const QString STR_MULTI_VIDFREQ = tr("Video TX frequency");
static const QString STR_MULTI_RFTUNE = tr("C2500 frequency fine tune");
static const QString STR_MULTI_TELEMETRY = tr("Telemetry");
static const QString STR_MULTI_RFPOWER = tr("Radio output power");
static const QString STR_MULTI_SERVOFREQ = tr("Servo output frequency");
static const QString STR_MULTI_OPTION= tr("Option value");
// Table is designed to be shared with gui_common_arm.cpp
const Multiprotocols multiProtocols {
{ MM_RF_PROTO_FLYSKY, STR_SUBTYPE_FLYSKY, 4, nullptr },
{ MM_RF_PROTO_HUBSAN, NO_SUBTYPE, 0, STR_MULTI_VIDFREQ },
{ MM_RF_PROTO_FRSKY, STR_SUBTYPE_FRSKY, 5, STR_MULTI_RFTUNE },
{ MM_RF_PROTO_HISKY, STR_SUBTYPE_HISKY, 1, nullptr },
{ MM_RF_PROTO_V2X2, STR_SUBTYPE_V2X2, 1, nullptr },
{ MM_RF_PROTO_DSM2, STR_SUBTYPE_DSM, 3, nullptr },
{ MM_RF_PROTO_YD717, STR_SUBTYPE_YD717, 4, nullptr },
{ MM_RF_PROTO_KN, STR_SUBTYPE_KN, 1, nullptr },
{ MM_RF_PROTO_SYMAX, STR_SUBTYPE_SYMAX, 1, nullptr },
{ MM_RF_PROTO_SLT, STR_SUBTYPE_SLT, 1, nullptr },
{ MM_RF_PROTO_CX10, STR_SUBTYPE_CX10, 7, nullptr },
{ MM_RF_PROTO_CG023, STR_SUBTYPE_CG023, 2, nullptr },
{ MM_RF_PROTO_BAYANG, STR_SUBTYPE_BAYANG, 1, STR_MULTI_TELEMETRY },
{ MM_RF_PROTO_MT99XX, STR_SUBTYPE_MT99, 4, nullptr },
{ MM_RF_PROTO_MJXQ, STR_SUBTYPE_MJXQ, 5, nullptr },
{ MM_RF_PROTO_FY326, STR_SUBTYPE_FY326, 1, nullptr },
{ MM_RF_PROTO_SFHSS, NO_SUBTYPE, 0, STR_MULTI_RFTUNE },
{ MM_RF_PROTO_HONTAI, STR_SUBTYPE_HONTAI, 2, nullptr },
{ MM_RF_PROTO_OLRS, NO_SUBTYPE, 0, STR_MULTI_RFPOWER },
{ MM_RF_PROTO_FS_AFHDS2A, STR_SUBTYPE_AFHDS2A, 3, STR_MULTI_SERVOFREQ },
{ MM_RF_PROTO_Q2X2, STR_SUBTYPE_Q2X2, 2, nullptr },
{ MM_RF_PROTO_WK_2X01, STR_SUBTYPE_WK2x01, 5, nullptr },
{ MM_RF_PROTO_Q303, STR_SUBTYPE_Q303, 3, nullptr },
{ MM_RF_PROTO_GW08, NO_SUBTYPE, 0, nullptr },
{ MM_RF_CUSTOM_SELECTED, STR_SUBTYPE_CUSTOM, 7, STR_MULTI_OPTION },
//Sential and default for protocols not listed above (MM_RF_CUSTOM is 0xff()
{ 0xfe, NO_SUBTYPE, 0, nullptr }
};
int Multiprotocols::MultiProtocolDefinition::getOptionMin() const {
if (optionsstr == STR_MULTI_RFPOWER)
return -1;
else if (optionsstr == STR_MULTI_SERVOFREQ)
return 0;
else
return -128;
}
int Multiprotocols::MultiProtocolDefinition::getOptionMax() const {
if (optionsstr == STR_MULTI_RFPOWER)
return 7;
else if (optionsstr == STR_MULTI_SERVOFREQ)
return 70;
else
return 127;
}
const Multiprotocols::MultiProtocolDefinition & Multiprotocols::getProtocol(int protocol) const {
for (const Multiprotocols::MultiProtocolDefinition & proto: protocols)
if (proto.protocol == protocol)
return proto;
// Protocol not found, return the default (last) proto
Q_ASSERT(protocols.rbegin()->protocol == 0xfe);
return *protocols.rbegin();
}

View file

@ -0,0 +1,75 @@
/*
* 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_MULTI_H
#define OPENTX_MULTI_H
#include <vector>
#include <QString>
#include <QVector>
#include <QStringList>
#define MM_RF_CUSTOM_SELECTED 0xff
class Multiprotocols {
struct radio_mm_definition {
int protocol;
QStringList protocols;
unsigned int maxSubtype;
QString optionsstr;
};
public:
struct MultiProtocolDefinition {
int protocol;
QStringList subTypeStrings;
const QString &optionsstr;
unsigned int numSubytes() const
{ return (unsigned int) subTypeStrings.length(); }
int getOptionMin() const;
int getOptionMax() const;
MultiProtocolDefinition(const radio_mm_definition &rd) : protocol(rd.protocol), subTypeStrings(rd.protocols),
optionsstr(rd.optionsstr)
{
Q_ASSERT(rd.maxSubtype + 1 == (unsigned int) rd.protocols.length());
}
};
private:
std::vector<MultiProtocolDefinition> protocols;
public:
Multiprotocols(std::initializer_list<radio_mm_definition> l)
{
for (radio_mm_definition rd: l)
protocols.push_back(MultiProtocolDefinition(rd));
}
const MultiProtocolDefinition &getProtocol(int protocol) const;
};
extern const Multiprotocols multiProtocols;
#endif //OPENTX_MULTI_H

View file

@ -795,15 +795,14 @@ enum MultiModuleRFProtocols {
MM_RF_PROTO_ASSAN,
MM_RF_PROTO_HONTAI,
MM_RF_PROTO_OLRS,
MM_RF_PROTO_AFHDS2A,
MM_RF_PROTO_FS_AFHDS2A,
MM_RF_PROTO_Q2X2,
MM_RF_PROTO_WK_2X01,
MM_RF_PROTO_Q303,
MM_RF_PROTO_LAST=MM_RF_PROTO_Q303
MM_RF_PROTO_GW08,
MM_RF_PROTO_LAST=MM_RF_PROTO_GW08
};
unsigned int getNumSubtypes(MultiModuleRFProtocols type);
enum TrainerProtocol {
TRAINER_MASTER_JACK,
TRAINER_SLAVE_JACK,

View file

@ -227,7 +227,7 @@
#ifdef MOUNTED_GETMNTINFO
# if ! HAVE_STRUCT_STATFS_F_FSTYPENAME && !defined(__clang__)
# if ! HAVE_STRUCT_STATFS_F_FSTYPENAME && defined(MOUNTED_VMOUNT)
static const char *
fstype_to_string (short int t)
{
@ -323,7 +323,8 @@ fstype_to_string (short int t)
}
# endif
#if !defined(__clang__)
// Not used
#if 0
static const char *
fsp_to_string (const struct statfs *fsp)
{

View file

@ -133,7 +133,7 @@ PACK(
uint8_t protocol;
const pm_char *subTypeString;
uint8_t maxSubtype;
const pm_char *optionsstr;
const char *optionsstr;
} );
const mm_protocol_definition *getMultiProtocolDefinition (uint8_t protocol);

View file

@ -596,9 +596,59 @@ int getFirstAvailable(int min, int max, IsValueAvailable isValueAvailable)
}
#if defined(MULTIMODULE)
// Third row is number of subtypes -1 (max valid subtype)
#define NO_SUBTYPE nullptr
// Table is designed to be shared with companion multi.cpp
// The subtype and options strings are only referenced here, so
// define them here to avoid duplication in all language files
// Also since these strings are ARM only and likely stay ARM only
// we don't need the special eeprom/flash string handling, just define them as
// local strings
static const char* STR_SUBTYPE_FLYSKY = "\004""Std\0""V9x9""V6x6""V912""CX20";
static const char* STR_SUBTYPE_AFHDS2A = "\010""PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS";
static const char* STR_SUBTYPE_FRSKY = "\007""D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch";
static const char* STR_SUBTYPE_HISKY = "\005""HiSky""HK310";
static const char* STR_SUBTYPE_DSM = "\006""2 22ms""2 11ms""X 22ms""X 11ms";
static const char* STR_SUBTYPE_YD717 = "\007""YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 ";
static const char* STR_SUBTYPE_SYMAX = "\003""Std""5c\0";
static const char* STR_SUBTYPE_SLT = "\005""SLT\0 ""Vista";
static const char* STR_SUBTYPE_CX10 = "\007""Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 ";
static const char* STR_SUBTYPE_CG023 = "\005""CG023""YD829""H3 3d";
static const char* STR_SUBTYPE_KN = "\006""WLtoys""FeiLun";
static const char* STR_SUBTYPE_MT99 = "\005""MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805";
static const char* STR_SUBTYPE_MJXQ = "\005""WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH";
static const char* STR_SUBTYPE_HONTAI= "\007""Std\0 ""JJRC X1""X5C1cln";
static const char* STR_SUBTYPE_Q2X2 = "\004""Q222""Q242""Q282";
static const char* STR_SUBTYPE_Q303 = "\006""Q303\0 ""CX35\0 ""CX10D\0""CX10WD";
static const char* STR_SUBTYPE_WK2x01 = "\006""WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI";
static const char* STR_SUBTYPE_V2X2 = "\006""V2x2\0 ""JXD506";
static const char* STR_SUBTYPE_BAYANG = "\006""Bayang""H8S3D";
static const char* STR_SUBTYPE_FY326 = "\005""FY326""FY319";
const mm_protocol_definition multi_protocols[] = {
{ MM_RF_PROTO_FLYSKY, STR_SUBTYPE_FLYSKY, 4, nullptr },
{ MM_RF_PROTO_HUBSAN, nullptr, 0, STR_MULTI_VIDFREQ },
{ MM_RF_PROTO_HUBSAN, NO_SUBTYPE, 0, STR_MULTI_VIDFREQ },
{ MM_RF_PROTO_FRSKY, STR_SUBTYPE_FRSKY, 5, STR_MULTI_RFTUNE },
{ MM_RF_PROTO_HISKY, STR_SUBTYPE_HISKY, 1, nullptr },
{ MM_RF_PROTO_V2X2, STR_SUBTYPE_V2X2, 1, nullptr },
@ -613,19 +663,22 @@ const mm_protocol_definition multi_protocols[] = {
{ MM_RF_PROTO_MT99XX, STR_SUBTYPE_MT99, 4, nullptr },
{ MM_RF_PROTO_MJXQ, STR_SUBTYPE_MJXQ, 5, nullptr },
{ MM_RF_PROTO_FY326, STR_SUBTYPE_FY326, 1, nullptr },
{ MM_RF_PROTO_SFHSS, nullptr, 0, STR_MULTI_RFTUNE },
{ MM_RF_PROTO_HONTAI, STR_SUBTYPE_HONTAI, 3, nullptr },
{ MM_RF_PROTO_OLRS, nullptr, 0, STR_MULTI_RFPOWER },
{ MM_RF_PROTO_SFHSS, NO_SUBTYPE, 0, STR_MULTI_RFTUNE },
{ MM_RF_PROTO_HONTAI, STR_SUBTYPE_HONTAI, 2, nullptr },
{ MM_RF_PROTO_OLRS, NO_SUBTYPE, 0, STR_MULTI_RFPOWER },
{ MM_RF_PROTO_FS_AFHDS2A, STR_SUBTYPE_AFHDS2A, 3, STR_MULTI_SERVOFREQ },
{ MM_RF_PROTO_Q2X2, STR_SUBTYPE_Q2X2, 1, nullptr },
{ MM_RF_PROTO_Q2X2, STR_SUBTYPE_Q2X2, 2, nullptr },
{ MM_RF_PROTO_WK_2X01, STR_SUBTYPE_WK2x01, 5, nullptr },
{ MM_RF_PROTO_Q303, STR_SUBTYPE_Q303, 3, nullptr },
{ MM_RF_CUSTOM_SELECTED, nullptr, 7, STR_MULTI_OPTION },
{ MM_RF_PROTO_GW08, NO_SUBTYPE, 0, nullptr },
{ MM_RF_CUSTOM_SELECTED, NO_SUBTYPE, 7, STR_MULTI_OPTION },
//Sential and default for protocols not listed above (MM_RF_CUSTOM is 0xff()
{ 0xfe, nullptr, 0, nullptr }
{ 0xfe, NO_SUBTYPE, 0, nullptr }
};
#undef NO_SUBTYPE
const mm_protocol_definition *getMultiProtocolDefinition (uint8_t protocol)
{
const mm_protocol_definition *pdef;

View file

@ -531,7 +531,8 @@ enum MultiModuleRFProtocols {
MM_RF_PROTO_Q2X2,
MM_RF_PROTO_WK_2X01,
MM_RF_PROTO_Q303,
MM_RF_PROTO_LAST= MM_RF_PROTO_Q303
MM_RF_PROTO_GW08,
MM_RF_PROTO_LAST= MM_RF_PROTO_GW08
};
enum MMDSM2Subtypes {

View file

@ -112,26 +112,6 @@ const pm_char STR_OPEN9X[] PROGMEM =
ISTR(DSM_PROTOCOLS)
#if defined(MULTIMODULE)
ISTR(MULTI_PROTOCOLS)
ISTR(SUBTYPE_FLYSKY)
ISTR(SUBTYPE_FRSKY)
ISTR(SUBTYPE_HISKY)
ISTR(SUBTYPE_DSM)
ISTR(SUBTYPE_YD717)
ISTR(SUBTYPE_SYMAX)
ISTR(SUBTYPE_SLT)
ISTR(SUBTYPE_CX10)
ISTR(SUBTYPE_CG023)
ISTR(SUBTYPE_KN)
ISTR(SUBTYPE_MT99)
ISTR(SUBTYPE_MJXQ)
ISTR(SUBTYPE_HONTAI)
ISTR(SUBTYPE_AFHDS2A)
ISTR(SUBTYPE_Q2X2)
ISTR(SUBTYPE_Q303)
ISTR(SUBTYPE_WK2x01)
ISTR(SUBTYPE_V2X2)
ISTR(SUBTYPE_BAYANG)
ISTR(SUBTYPE_FY326)
#endif
ISTR(VOLTSRC)
ISTR(CURVE_TYPES)

View file

@ -213,27 +213,7 @@ extern const pm_char STR_OPEN9X[];
#define OFS_DSM_PROTOCOLS (OFS_XJT_PROTOCOLS + sizeof(TR_XJT_PROTOCOLS))
#if defined(MULTIMODULE)
#define OFS_MULTI_PROTOCOLS (OFS_DSM_PROTOCOLS + sizeof(TR_DSM_PROTOCOLS))
#define OFS_SUBTYPE_FLYSKY (OFS_MULTI_PROTOCOLS + sizeof(TR_MULTI_PROTOCOLS))
#define OFS_SUBTYPE_FRSKY (OFS_SUBTYPE_FLYSKY + sizeof(TR_SUBTYPE_FLYSKY))
#define OFS_SUBTYPE_HISKY (OFS_SUBTYPE_FRSKY + sizeof(TR_SUBTYPE_FRSKY))
#define OFS_SUBTYPE_DSM (OFS_SUBTYPE_HISKY + sizeof(TR_SUBTYPE_HISKY))
#define OFS_SUBTYPE_YD717 (OFS_SUBTYPE_DSM + sizeof(TR_SUBTYPE_DSM))
#define OFS_SUBTYPE_SYMAX (OFS_SUBTYPE_YD717 + sizeof(TR_SUBTYPE_YD717))
#define OFS_SUBTYPE_SLT (OFS_SUBTYPE_SYMAX + sizeof(TR_SUBTYPE_SYMAX))
#define OFS_SUBTYPE_CX10 (OFS_SUBTYPE_SLT + sizeof(TR_SUBTYPE_SLT))
#define OFS_SUBTYPE_CG023 (OFS_SUBTYPE_CX10 + sizeof(TR_SUBTYPE_CX10))
#define OFS_SUBTYPE_KN (OFS_SUBTYPE_CG023 + sizeof(TR_SUBTYPE_CG023))
#define OFS_SUBTYPE_MT99 (OFS_SUBTYPE_KN + sizeof(TR_SUBTYPE_KN))
#define OFS_SUBTYPE_MJXQ (OFS_SUBTYPE_MT99 + sizeof(TR_SUBTYPE_MT99))
#define OFS_SUBTYPE_HONTAI (OFS_SUBTYPE_MJXQ + sizeof(TR_SUBTYPE_MJXQ))
#define OFS_SUBTYPE_AFHDS2A (OFS_SUBTYPE_HONTAI + sizeof(TR_SUBTYPE_HONTAI))
#define OFS_SUBTYPE_Q2X2 (OFS_SUBTYPE_AFHDS2A + sizeof(TR_SUBTYPE_AFHDS2A))
#define OFS_SUBTYPE_Q303 (OFS_SUBTYPE_Q2X2 + sizeof(TR_SUBTYPE_Q2X2))
#define OFS_SUBTYPE_WK2x01 (OFS_SUBTYPE_Q303 + sizeof(TR_SUBTYPE_Q303))
#define OFS_SUBTYPE_V2X2 (OFS_SUBTYPE_WK2x01 + sizeof(TR_SUBTYPE_WK2x01))
#define OFS_SUBTYPE_BAYANG (OFS_SUBTYPE_V2X2 + sizeof(TR_SUBTYPE_V2X2))
#define OFS_SUBTYPE_FY326 (OFS_SUBTYPE_BAYANG + sizeof(TR_SUBTYPE_BAYANG))
#define OFS_VOLTSRC (OFS_SUBTYPE_FY326 + sizeof(TR_SUBTYPE_FY326))
#define OFS_VOLTSRC (OFS_MULTI_PROTOCOLS + sizeof(TR_MULTI_PROTOCOLS))
#else
#define OFS_VOLTSRC (OFS_DSM_PROTOCOLS + sizeof(TR_DSM_PROTOCOLS))
#endif
@ -355,26 +335,6 @@ extern const pm_char STR_OPEN9X[];
#define STR_DSM_PROTOCOLS (STR_OPEN9X + OFS_DSM_PROTOCOLS)
#if defined(MULTIMODULE)
#define STR_MULTI_PROTOCOLS (STR_OPEN9X + OFS_MULTI_PROTOCOLS)
#define STR_SUBTYPE_FLYSKY (STR_OPEN9X + OFS_SUBTYPE_FLYSKY)
#define STR_SUBTYPE_FRSKY (STR_OPEN9X + OFS_SUBTYPE_FRSKY)
#define STR_SUBTYPE_HISKY (STR_OPEN9X + OFS_SUBTYPE_HISKY)
#define STR_SUBTYPE_DSM (STR_OPEN9X + OFS_SUBTYPE_DSM)
#define STR_SUBTYPE_YD717 (STR_OPEN9X + OFS_SUBTYPE_YD717)
#define STR_SUBTYPE_SYMAX (STR_OPEN9X + OFS_SUBTYPE_SYMAX)
#define STR_SUBTYPE_SLT (STR_OPEN9X + OFS_SUBTYPE_SLT)
#define STR_SUBTYPE_CX10 (STR_OPEN9X + OFS_SUBTYPE_CX10)
#define STR_SUBTYPE_CG023 (STR_OPEN9X + OFS_SUBTYPE_CG023)
#define STR_SUBTYPE_KN (STR_OPEN9X + OFS_SUBTYPE_KN)
#define STR_SUBTYPE_MT99 (STR_OPEN9X + OFS_SUBTYPE_MT99)
#define STR_SUBTYPE_MJXQ (STR_OPEN9X + OFS_SUBTYPE_MJXQ)
#define STR_SUBTYPE_HONTAI (STR_OPEN9X + OFS_SUBTYPE_HONTAI)
#define STR_SUBTYPE_AFHDS2A (STR_OPEN9X + OFS_SUBTYPE_AFHDS2A)
#define STR_SUBTYPE_Q2X2 (STR_OPEN9X + OFS_SUBTYPE_Q2X2)
#define STR_SUBTYPE_Q303 (STR_OPEN9X + OFS_SUBTYPE_Q303)
#define STR_SUBTYPE_WK2x01 (STR_OPEN9X + OFS_SUBTYPE_WK2x01)
#define STR_SUBTYPE_V2X2 (STR_OPEN9X + OFS_SUBTYPE_V2X2)
#define STR_SUBTYPE_BAYANG (STR_OPEN9X + OFS_SUBTYPE_BAYANG)
#define STR_SUBTYPE_FY326 (STR_OPEN9X + OFS_SUBTYPE_FY326)
#endif
#define STR_CURVE_TYPES (STR_OPEN9X + OFS_CURVE_TYPES)
#define STR_VSENSORTYPES (STR_OPEN9X + OFS_VSENSORTYPES)

View file

@ -107,70 +107,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 "
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Custom"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912""CX20"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"
#define LEN_VTRIMINC "\007"
#define TR_VTRIMINC "Expo\0 ""ExJemný""Jemný\0 ""Střední""Hrubý\0 "

View file

@ -112,70 +112,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX" //LP45 =Low Power 4 und 5 Kanal
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Custom"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912""CX20"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""SYMAX2\0""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Grün \0 ""Blau\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"
#define LEN_VTRIMINC TR("\007", "\014") // ursprüglich "\006", "\013"
#define TR_VTRIMINC TR("Expo ""ExFein ""Fein ""Mittel ""Grob ", "Exponentiell""Extrafein ""Fein ""Mittel ""Grob ")

View file

@ -111,70 +111,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 "
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Custom"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912""CX20"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"
#define LEN_VTRIMINC TR("\006", "\013")
#define TR_VTRIMINC TR("Expo\0 ""ExFine""Fine\0 ""Medium""Coarse", "Exponential""Extra Fine\0""Fine\0 ""Medium\0 ""Coarse\0 ")

View file

@ -107,70 +107,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 "
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Custom"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"
#define LEN_VTRIMINC TR("\006", "\013")
#define TR_VTRIMINC TR("Expo ""ExFino""Fino ""Medio ""Grueso", "Exponencial""Extra Fino ""Fino ""Medio ""Grueso ")

View file

@ -107,70 +107,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 "
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Custom"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912""CX20"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"
#define LEN_VTRIMINC TR("\006", "\013")
#define TR_VTRIMINC TR("Expo\0 ""EriHie""Hieno\0""Keski\0""Karkea", "Exponential""Eri Hieno\0 ""Hieno\0 ""Keski\0 ""Karkea\0 ")

View file

@ -107,70 +107,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 "
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Perso"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912""CX20"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"
#define LEN_VTRIMINC TR("\006", "\013")
#define TR_VTRIMINC TR("Expo\0 ""ExFin\0""Fin\0 ""Moyen\0""Gros\0 ","Exponentiel""Extra Fin\0 ""Fin\0 ""Moyen\0 ""Grossier\0 ")

View file

@ -107,70 +107,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 "
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Custom"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912""CX20"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"
#define LEN_VTRIMINC "\006"
#define TR_VTRIMINC "Exp ""ExFine""Fine ""Medio ""Ampio "

View file

@ -112,70 +112,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 "
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Custom"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912""CX20"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"
#define LEN_VTRIMINC TR("\006", "\014")
#define TR_VTRIMINC TR("Expo\0 ""ExFijn""Fijn\0 ""Medium""Grof\0 ", "Exponentieel""Extra Fijn\0 ""Fijn\0 ""Medium\0 ""Grof\0 ")

View file

@ -108,70 +108,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 "
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Custom"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912""CX20"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"
#define LEN_VTRIMINC TR("\006", "\013") /*11 decimal*/
#define TR_VTRIMINC TR("Expo\0 ""B.Dokł""Dokł.\0""Średni""Zgrubn", "Expotencja ""B.Dokładny\0""Dokładny\0 ""Średni\0 ""Zgrubny\0 ")

View file

@ -107,68 +107,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 "
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Custom"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912""CX20"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"

View file

@ -107,70 +107,10 @@
#define TR_DSM_PROTOCOLS "LP45""DSM2""DSMX"
#define LEN_MULTI_PROTOCOLS "\006"
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 "
#define TR_MULTI_PROTOCOLS "FlySky""Hubsan""FrSky\0""Hisky\0""V2x2\0 ""DSM\0 ""Devo\0 ""YD717\0""KN\0 ""SymaX\0""SLT\0 ""CX10\0 ""CG023\0""Bayang""ESky\0 ""MT99XX""MJXQ\0 ""Shenqi""FY326\0""SFHSS\0""J6 PRO""FQ777\0""Assan\0""Hontai""OLRS\0 ""FS 2A\0""Q2x2\0 ""Walk.\0""Q303\0 ""GW008\0"
#define TR_MULTI_CUSTOM "Custom"
#define LEN_SUBTYPE_FLYSKY "\004"
#define TR_SUBTYPE_FLYSKY "Std\0""V9x9""V6x6""V912""CX20"
#define LEN_SUBTYPE_AFHDS2A "\010"
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"
#define LEN_SUBTYPE_DSM "\006"
#define TR_SUBTYPE_DSM "2 22ms""2 11ms""X 22ms""X 11ms"
#define LEN_SUBTYPE_YD717 "\007"
#define TR_SUBTYPE_YD717 "YD717\0 ""SKYWLKR""Syma X2""XINXUN\0""NIHUI\0 "
#define LEN_SUBTYPE_SYMAX "\003"
#define TR_SUBTYPE_SYMAX "Std""5c\0"
#define LEN_SUBTYPE_SLT "\005"
#define TR_SUBTYPE_SLT "SLT\0 ""Vista"
#define LEN_SUBTYPE_CX10 "\007"
#define TR_SUBTYPE_CX10 "Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041""Q242\0 "
#define LEN_SUBTYPE_CG023 "\005"
#define TR_SUBTYPE_CG023 "CG023""YD829""H3 3d"
#define LEN_SUBTYPE_KN "\006"
#define TR_SUBTYPE_KN "WLtoys""FeiLun"
#define LEN_SUBTYPE_MT99 "\005"
#define TR_SUBTYPE_MT99 "MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805"
#define LEN_SUBTYPE_MJXQ "\005"
#define TR_SUBTYPE_MJXQ "WLH08""X600\0""X800\0""H26D\0""E010\0""H26WH"
#define LEN_SUBTYPE_HONTAI "\007"
#define TR_SUBTYPE_HONTAI "Std\0 ""JJRC X1""X5C1cln"
#define LEN_SUBTYPE_Q2X2 "\004"
#define TR_SUBTYPE_Q2X2 "Q222""Q242""Q282"
#define LEN_SUBTYPE_WK2x01 "\006"
#define TR_SUBTYPE_WK2x01 "WK2801""WK2401""W6_5_1""W6_6_1""W6_Hel""W6_HeI"
#define LEN_SUBTYPE_Q303 "\006"
#define TR_SUBTYPE_Q303 "Q303\0 ""CX35\0 ""CX10D\0""CX10WD"
#define LEN_SUBTYPE_V2X2 "\006"
#define TR_SUBTYPE_V2X2 "V2x2\0 ""JXD506"
#define LEN_SUBTYPE_BAYANG "\006"
#define TR_SUBTYPE_BAYANG "Bayang""H8S3D"
#define LEN_SUBTYPE_FY326 "\005"
#define TR_SUBTYPE_FY326 "FY326""FY319"
#define LEN_VTRIMINC TR("\006","\014")
#define TR_VTRIMINC TR("Expo\0 ""xFin\0 ""Fin\0 ""Medium""Grov\0 ","Exponentiell""Extra Fin\0 ""Fin\0 ""Medium\0 ""Grov\0 ")