mirror of
https://github.com/opentx/opentx.git
synced 2025-07-15 20:35:17 +03:00
parent
4dda2c64d3
commit
fb27acf286
22 changed files with 314 additions and 266 deletions
|
@ -9,8 +9,9 @@ enum BoardEnum {
|
||||||
BOARD_SKY9X,
|
BOARD_SKY9X,
|
||||||
BOARD_9XRPRO,
|
BOARD_9XRPRO,
|
||||||
BOARD_AR9X,
|
BOARD_AR9X,
|
||||||
BOARD_TARANIS,
|
BOARD_X7D,
|
||||||
BOARD_TARANIS_PLUS,
|
BOARD_TARANIS_X9D,
|
||||||
|
BOARD_TARANIS_X9DP,
|
||||||
BOARD_TARANIS_X9E,
|
BOARD_TARANIS_X9E,
|
||||||
BOARD_FLAMENCO,
|
BOARD_FLAMENCO,
|
||||||
BOARD_HORUS
|
BOARD_HORUS
|
||||||
|
@ -38,4 +39,9 @@ enum BoardEnum {
|
||||||
#define C9X_NUM_SWITCHES 32
|
#define C9X_NUM_SWITCHES 32
|
||||||
#define C9X_NUM_KEYS 32
|
#define C9X_NUM_KEYS 32
|
||||||
|
|
||||||
|
const char * const ARROW_LEFT = "\xE2\x86\x90";
|
||||||
|
const char * const ARROW_UP = "\xE2\x86\x91";
|
||||||
|
const char * const ARROW_RIGHT = "\xE2\x86\x92";
|
||||||
|
const char * const ARROW_DOWN = "\xE2\x86\x93";
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
#include <QtWidgets>
|
#include <QtWidgets>
|
||||||
|
#include <stdlib.h>
|
||||||
#include "eeprominterface.h"
|
#include "eeprominterface.h"
|
||||||
#include "firmwares/er9x/er9xinterface.h"
|
#include "firmwares/er9x/er9xinterface.h"
|
||||||
#include "firmwares/th9x/th9xinterface.h"
|
#include "firmwares/th9x/th9xinterface.h"
|
||||||
|
@ -16,13 +17,6 @@
|
||||||
|
|
||||||
std::list<QString> EEPROMWarnings;
|
std::list<QString> EEPROMWarnings;
|
||||||
|
|
||||||
const char * switches9X[] = { "3POS", "THR", "RUD", "ELE", "AIL", "GEA", "TRN" };
|
|
||||||
const char * switchesX9D[] = { "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SP", "SQ", "SR" };
|
|
||||||
const char leftArrow[] = {(char)0xE2, (char)0x86, (char)0x90, 0};
|
|
||||||
const char rightArrow[] = {(char)0xE2, (char)0x86, (char)0x92, 0};
|
|
||||||
const char upArrow[] = {(char)0xE2, (char)0x86, (char)0x91, 0};
|
|
||||||
const char downArrow[] = {(char)0xE2, (char)0x86, (char)0x93, 0};
|
|
||||||
|
|
||||||
const uint8_t chout_ar[] = { // First number is 0..23 -> template setup, Second is relevant channel out
|
const uint8_t chout_ar[] = { // First number is 0..23 -> template setup, Second is relevant channel out
|
||||||
1,2,3,4 , 1,2,4,3 , 1,3,2,4 , 1,3,4,2 , 1,4,2,3 , 1,4,3,2,
|
1,2,3,4 , 1,2,4,3 , 1,3,2,4 , 1,3,4,2 , 1,4,2,3 , 1,4,3,2,
|
||||||
2,1,3,4 , 2,1,4,3 , 2,3,1,4 , 2,3,4,1 , 2,4,1,3 , 2,4,3,1,
|
2,1,3,4 , 2,1,4,3 , 2,3,1,4 , 2,3,4,1 , 2,4,1,3 , 2,4,3,1,
|
||||||
|
@ -500,7 +494,7 @@ QString RawSource::toString(const ModelData * model) const
|
||||||
case SOURCE_TYPE_MAX:
|
case SOURCE_TYPE_MAX:
|
||||||
return QObject::tr("MAX");
|
return QObject::tr("MAX");
|
||||||
case SOURCE_TYPE_SWITCH:
|
case SOURCE_TYPE_SWITCH:
|
||||||
return (IS_TARANIS(GetEepromInterface()->getBoard()) ? CHECK_IN_ARRAY(switchesX9D, index) : CHECK_IN_ARRAY(switches9X, index));
|
return GetCurrentFirmware()->getSwitch(index).name;
|
||||||
case SOURCE_TYPE_CUSTOM_SWITCH:
|
case SOURCE_TYPE_CUSTOM_SWITCH:
|
||||||
return QObject::tr("L%1").arg(index+1);
|
return QObject::tr("L%1").arg(index+1);
|
||||||
case SOURCE_TYPE_CYC:
|
case SOURCE_TYPE_CYC:
|
||||||
|
@ -542,19 +536,6 @@ bool RawSource::isSlider() const
|
||||||
index < NUM_STICKS+GetCurrentFirmware()->getCapability(Pots)+GetCurrentFirmware()->getCapability(Sliders));
|
index < NUM_STICKS+GetCurrentFirmware()->getCapability(Pots)+GetCurrentFirmware()->getCapability(Sliders));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QString SwitchUp(const char sw)
|
|
||||||
{
|
|
||||||
const char result[] = {'S', sw, upArrow[0], upArrow[1], upArrow[2], 0};
|
|
||||||
return QString::fromUtf8(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString SwitchDn(const char sw)
|
|
||||||
{
|
|
||||||
const char result[] = {'S', sw, downArrow[0], downArrow[1], downArrow[2], 0};
|
|
||||||
return QString::fromUtf8(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString RawSwitch::toString() const
|
QString RawSwitch::toString() const
|
||||||
{
|
{
|
||||||
static const QString switches9X[] = {
|
static const QString switches9X[] = {
|
||||||
|
@ -563,27 +544,6 @@ QString RawSwitch::toString() const
|
||||||
QString("AIL"), QString("GEA"), QString("TRN")
|
QString("AIL"), QString("GEA"), QString("TRN")
|
||||||
};
|
};
|
||||||
|
|
||||||
static const QString switchesX9D[] = {
|
|
||||||
SwitchUp('A'), QString::fromUtf8("SA-"), SwitchDn('A'),
|
|
||||||
SwitchUp('B'), QString::fromUtf8("SB-"), SwitchDn('B'),
|
|
||||||
SwitchUp('C'), QString::fromUtf8("SC-"), SwitchDn('C'),
|
|
||||||
SwitchUp('D'), QString::fromUtf8("SD-"), SwitchDn('D'),
|
|
||||||
SwitchUp('E'), QString::fromUtf8("SE-"), SwitchDn('E'),
|
|
||||||
SwitchUp('F'), QString::fromUtf8("SF-"), SwitchDn('F'),
|
|
||||||
SwitchUp('G'), QString::fromUtf8("SG-"), SwitchDn('G'),
|
|
||||||
SwitchUp('H'), QString::fromUtf8("SH-"), SwitchDn('H'),
|
|
||||||
SwitchUp('I'), QString::fromUtf8("SI-"), SwitchDn('I'),
|
|
||||||
SwitchUp('J'), QString::fromUtf8("SJ-"), SwitchDn('J'),
|
|
||||||
SwitchUp('K'), QString::fromUtf8("SK-"), SwitchDn('K'),
|
|
||||||
SwitchUp('L'), QString::fromUtf8("SL-"), SwitchDn('L'),
|
|
||||||
SwitchUp('M'), QString::fromUtf8("SM-"), SwitchDn('M'),
|
|
||||||
SwitchUp('N'), QString::fromUtf8("SN-"), SwitchDn('N'),
|
|
||||||
SwitchUp('O'), QString::fromUtf8("SO-"), SwitchDn('O'),
|
|
||||||
SwitchUp('P'), QString::fromUtf8("SP-"), SwitchDn('P'),
|
|
||||||
SwitchUp('Q'), QString::fromUtf8("SQ-"), SwitchDn('Q'),
|
|
||||||
SwitchUp('R'), QString::fromUtf8("SR-"), SwitchDn('R'),
|
|
||||||
};
|
|
||||||
|
|
||||||
static const QString flightModes[] = {
|
static const QString flightModes[] = {
|
||||||
QObject::tr("FM0"), QObject::tr("FM1"), QObject::tr("FM2"), QObject::tr("FM3"), QObject::tr("FM4"), QObject::tr("FM5"), QObject::tr("FM6"), QObject::tr("FM7"), QObject::tr("FM8")
|
QObject::tr("FM0"), QObject::tr("FM1"), QObject::tr("FM2"), QObject::tr("FM3"), QObject::tr("FM4"), QObject::tr("FM5"), QObject::tr("FM6"), QObject::tr("FM7"), QObject::tr("FM8")
|
||||||
};
|
};
|
||||||
|
@ -616,10 +576,15 @@ QString RawSwitch::toString() const
|
||||||
else {
|
else {
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case SWITCH_TYPE_SWITCH:
|
case SWITCH_TYPE_SWITCH:
|
||||||
if (IS_TARANIS(GetEepromInterface()->getBoard()))
|
if (IS_TARANIS(GetEepromInterface()->getBoard())) {
|
||||||
return CHECK_IN_ARRAY(switchesX9D, index-1);
|
div_t qr = div(index-1, 3);
|
||||||
else
|
Firmware::Switch sw = GetCurrentFirmware()->getSwitch(qr.quot);
|
||||||
return CHECK_IN_ARRAY(switches9X, index-1);
|
const char * positions[] = { ARROW_UP, "-", ARROW_DOWN };
|
||||||
|
return QString(sw.name) + QString(positions[qr.rem]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return CHECK_IN_ARRAY(switches9X, index - 1);
|
||||||
|
}
|
||||||
case SWITCH_TYPE_VIRTUAL:
|
case SWITCH_TYPE_VIRTUAL:
|
||||||
return QObject::tr("L%1").arg(index);
|
return QObject::tr("L%1").arg(index);
|
||||||
case SWITCH_TYPE_MULTIPOS_POT:
|
case SWITCH_TYPE_MULTIPOS_POT:
|
||||||
|
@ -1008,17 +973,17 @@ bool GeneralSettings::switchPositionAllowedTaranis(int index) const
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
return true;
|
return true;
|
||||||
SwitchInfo info = switchInfoFromSwitchPositionTaranis(abs(index));
|
SwitchInfo info = switchInfoFromSwitchPositionTaranis(abs(index));
|
||||||
if (index < 0 && switchConfig[info.index] != SWITCH_3POS)
|
if (index < 0 && switchConfig[info.index] != Firmware::SWITCH_3POS)
|
||||||
return false;
|
return false;
|
||||||
else if (info.position == 1)
|
else if (info.position == 1)
|
||||||
return switchConfig[info.index] == SWITCH_3POS;
|
return switchConfig[info.index] == Firmware::SWITCH_3POS;
|
||||||
else
|
else
|
||||||
return switchConfig[info.index] != SWITCH_NONE;
|
return switchConfig[info.index] != Firmware::SWITCH_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GeneralSettings::switchSourceAllowedTaranis(int index) const
|
bool GeneralSettings::switchSourceAllowedTaranis(int index) const
|
||||||
{
|
{
|
||||||
return switchConfig[index] != SWITCH_NONE;
|
return switchConfig[index] != Firmware::SWITCH_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GeneralSettings::isPotAvailable(int index) const
|
bool GeneralSettings::isPotAvailable(int index) const
|
||||||
|
@ -1046,20 +1011,16 @@ GeneralSettings::GeneralSettings()
|
||||||
calibSpanPos[i] = 0x180;
|
calibSpanPos[i] = 0x180;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i=0; i<GetCurrentFirmware()->getCapability(Switches); i++) {
|
||||||
|
switchConfig[i] = GetCurrentFirmware()->getSwitch(i).type;
|
||||||
|
}
|
||||||
|
|
||||||
BoardEnum board = GetEepromInterface()->getBoard();
|
BoardEnum board = GetEepromInterface()->getBoard();
|
||||||
if (IS_TARANIS(board)) {
|
if (IS_TARANIS(board)) {
|
||||||
potConfig[0] = POT_WITH_DETENT;
|
potConfig[0] = POT_WITH_DETENT;
|
||||||
potConfig[1] = POT_WITH_DETENT;
|
potConfig[1] = POT_WITH_DETENT;
|
||||||
sliderConfig[0] = SLIDER_WITH_DETENT;
|
sliderConfig[0] = SLIDER_WITH_DETENT;
|
||||||
sliderConfig[1] = SLIDER_WITH_DETENT;
|
sliderConfig[1] = SLIDER_WITH_DETENT;
|
||||||
switchConfig[0] = SWITCH_3POS;
|
|
||||||
switchConfig[1] = SWITCH_3POS;
|
|
||||||
switchConfig[2] = SWITCH_3POS;
|
|
||||||
switchConfig[3] = SWITCH_3POS;
|
|
||||||
switchConfig[4] = SWITCH_3POS;
|
|
||||||
switchConfig[5] = SWITCH_2POS;
|
|
||||||
switchConfig[6] = SWITCH_3POS;
|
|
||||||
switchConfig[7] = SWITCH_TOGGLE;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (int i=0; i<3; i++) {
|
for (int i=0; i<3; i++) {
|
||||||
|
@ -1604,8 +1565,8 @@ void registerEEpromInterfaces()
|
||||||
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_GRUVIN9X));
|
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_GRUVIN9X));
|
||||||
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_SKY9X));
|
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_SKY9X));
|
||||||
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_9XRPRO));
|
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_9XRPRO));
|
||||||
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_TARANIS));
|
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_TARANIS_X9D));
|
||||||
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_TARANIS_PLUS));
|
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_TARANIS_X9DP));
|
||||||
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_TARANIS_X9E));
|
eepromInterfaces.push_back(new OpenTxEepromInterface(BOARD_TARANIS_X9E));
|
||||||
eepromInterfaces.push_back(new Gruvin9xInterface(BOARD_STOCK));
|
eepromInterfaces.push_back(new Gruvin9xInterface(BOARD_STOCK));
|
||||||
eepromInterfaces.push_back(new Gruvin9xInterface(BOARD_GRUVIN9X));
|
eepromInterfaces.push_back(new Gruvin9xInterface(BOARD_GRUVIN9X));
|
||||||
|
@ -1754,8 +1715,8 @@ const int Firmware::getFlashSize()
|
||||||
case BOARD_9XRPRO:
|
case BOARD_9XRPRO:
|
||||||
case BOARD_AR9X:
|
case BOARD_AR9X:
|
||||||
return FSIZE_9XRPRO;
|
return FSIZE_9XRPRO;
|
||||||
case BOARD_TARANIS:
|
case BOARD_TARANIS_X9D:
|
||||||
case BOARD_TARANIS_PLUS:
|
case BOARD_TARANIS_X9DP:
|
||||||
case BOARD_TARANIS_X9E:
|
case BOARD_TARANIS_X9E:
|
||||||
case BOARD_FLAMENCO:
|
case BOARD_FLAMENCO:
|
||||||
return FSIZE_TARANIS;
|
return FSIZE_TARANIS;
|
||||||
|
|
|
@ -51,13 +51,14 @@
|
||||||
#define IS_2560(board) (board==BOARD_GRUVIN9X || board==BOARD_MEGA2560)
|
#define IS_2560(board) (board==BOARD_GRUVIN9X || board==BOARD_MEGA2560)
|
||||||
#define IS_SKY9X(board) (board==BOARD_SKY9X || board==BOARD_9XRPRO || board==BOARD_AR9X)
|
#define IS_SKY9X(board) (board==BOARD_SKY9X || board==BOARD_9XRPRO || board==BOARD_AR9X)
|
||||||
#define IS_9XRPRO(board) (board==BOARD_9XRPRO)
|
#define IS_9XRPRO(board) (board==BOARD_9XRPRO)
|
||||||
#define IS_TARANIS(board) (board==BOARD_TARANIS || board==BOARD_TARANIS_PLUS || board==BOARD_TARANIS_X9E)
|
#define IS_TARANIS(board) (board==BOARD_TARANIS_X9D || board==BOARD_TARANIS_X9DP || board==BOARD_TARANIS_X9E || board==BOARD_X7D)
|
||||||
#define IS_TARANIS_PLUS(board) (board==BOARD_TARANIS_PLUS || board==BOARD_TARANIS_X9E)
|
#define IS_TARANIS_PLUS(board) (board==BOARD_TARANIS_X9DP || board==BOARD_TARANIS_X9E)
|
||||||
#define IS_TARANIS_X9E(board) (board==BOARD_TARANIS_X9E)
|
#define IS_TARANIS_X9E(board) (board==BOARD_TARANIS_X9E)
|
||||||
#define IS_HORUS(board) (board==BOARD_HORUS)
|
#define IS_HORUS(board) (board==BOARD_HORUS)
|
||||||
#define IS_FLAMENCO(board) (board==BOARD_FLAMENCO)
|
#define IS_FLAMENCO(board) (board==BOARD_FLAMENCO)
|
||||||
#define IS_STM32(board) (IS_TARANIS(board) || IS_HORUS(board) || IS_FLAMENCO(board))
|
#define IS_STM32(board) (IS_TARANIS(board) || IS_HORUS(board) || IS_FLAMENCO(board))
|
||||||
#define IS_ARM(board) (IS_STM32(board) || IS_SKY9X(board))
|
#define IS_ARM(board) (IS_STM32(board) || IS_SKY9X(board))
|
||||||
|
#define HAS_LARGE_LCD(board) (IS_TARANIS(board) && board != BOARD_X7D)
|
||||||
|
|
||||||
const uint8_t modn12x3[4][4]= {
|
const uint8_t modn12x3[4][4]= {
|
||||||
{1, 2, 3, 4},
|
{1, 2, 3, 4},
|
||||||
|
@ -65,14 +66,6 @@ const uint8_t modn12x3[4][4]= {
|
||||||
{4, 2, 3, 1},
|
{4, 2, 3, 1},
|
||||||
{4, 3, 2, 1} };
|
{4, 3, 2, 1} };
|
||||||
|
|
||||||
#define STK_RUD 1
|
|
||||||
#define STK_ELE 2
|
|
||||||
#define STK_THR 3
|
|
||||||
#define STK_AIL 4
|
|
||||||
#define STK_P1 5
|
|
||||||
#define STK_P2 6
|
|
||||||
#define STK_P3 7
|
|
||||||
|
|
||||||
enum Switches {
|
enum Switches {
|
||||||
SWITCH_NONE,
|
SWITCH_NONE,
|
||||||
|
|
||||||
|
@ -149,18 +142,6 @@ enum FailsafeModes {
|
||||||
#define TRIM_T6_UP 11
|
#define TRIM_T6_UP 11
|
||||||
#define TRIM_NONE 12
|
#define TRIM_NONE 12
|
||||||
|
|
||||||
// Beep center bits
|
|
||||||
#define BC_BIT_RUD (0x01)
|
|
||||||
#define BC_BIT_ELE (0x02)
|
|
||||||
#define BC_BIT_THR (0x04)
|
|
||||||
#define BC_BIT_AIL (0x08)
|
|
||||||
#define BC_BIT_P1 (0x10)
|
|
||||||
#define BC_BIT_P2 (0x20)
|
|
||||||
#define BC_BIT_P3 (0x40)
|
|
||||||
#define BC_BIT_P4 (0x80)
|
|
||||||
#define BC_BIT_REA (0x80)
|
|
||||||
#define BC_BIT_REB (0x100)
|
|
||||||
|
|
||||||
#define CHAR_FOR_NAMES " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-."
|
#define CHAR_FOR_NAMES " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-."
|
||||||
#define CHAR_FOR_NAMES_REGEX "[ A-Za-z0-9_.-,]*"
|
#define CHAR_FOR_NAMES_REGEX "[ A-Za-z0-9_.-,]*"
|
||||||
|
|
||||||
|
@ -172,13 +153,6 @@ enum HeliSwashTypes {
|
||||||
HELI_SWASH_TYPE_90
|
HELI_SWASH_TYPE_90
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const char * switches9X[];
|
|
||||||
extern const char * switchesX9D[];
|
|
||||||
extern const char leftArrow[];
|
|
||||||
extern const char rightArrow[];
|
|
||||||
extern const char upArrow[];
|
|
||||||
extern const char downArrow[];
|
|
||||||
|
|
||||||
class ModelData;
|
class ModelData;
|
||||||
class GeneralSettings;
|
class GeneralSettings;
|
||||||
|
|
||||||
|
@ -1187,13 +1161,6 @@ class GeneralSettings {
|
||||||
SLIDER_WITH_DETENT
|
SLIDER_WITH_DETENT
|
||||||
};
|
};
|
||||||
|
|
||||||
enum SwitchConfig {
|
|
||||||
SWITCH_NONE,
|
|
||||||
SWITCH_TOGGLE,
|
|
||||||
SWITCH_2POS,
|
|
||||||
SWITCH_3POS,
|
|
||||||
};
|
|
||||||
|
|
||||||
GeneralSettings();
|
GeneralSettings();
|
||||||
|
|
||||||
int getDefaultStick(unsigned int channel) const;
|
int getDefaultStick(unsigned int channel) const;
|
||||||
|
@ -1315,6 +1282,7 @@ class RadioData {
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Capability {
|
enum Capability {
|
||||||
|
ModelName,
|
||||||
FlightModes,
|
FlightModes,
|
||||||
FlightModesName,
|
FlightModesName,
|
||||||
FlightModesHaveFades,
|
FlightModesHaveFades,
|
||||||
|
@ -1678,7 +1646,21 @@ class Firmware {
|
||||||
return eepromInterface;
|
return eepromInterface;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int getCapability(const Capability) = 0;
|
virtual int getCapability(Capability) = 0;
|
||||||
|
|
||||||
|
enum SwitchType {
|
||||||
|
SWITCH_NONE,
|
||||||
|
SWITCH_TOGGLE,
|
||||||
|
SWITCH_2POS,
|
||||||
|
SWITCH_3POS
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Switch {
|
||||||
|
SwitchType type;
|
||||||
|
const char * name;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual Switch getSwitch(unsigned int index) = 0;
|
||||||
|
|
||||||
virtual QTime getMaxTimerStart() = 0;
|
virtual QTime getMaxTimerStart() = 0;
|
||||||
|
|
||||||
|
|
|
@ -10,12 +10,11 @@
|
||||||
#define IS_DBLRAM(board, version) ((IS_2560(board) && version >= 213) || (board==BOARD_M128 && version >= 213 && version <= 214))
|
#define IS_DBLRAM(board, version) ((IS_2560(board) && version >= 213) || (board==BOARD_M128 && version >= 213 && version <= 214))
|
||||||
|
|
||||||
#define HAS_PERSISTENT_TIMERS(board) (IS_ARM(board) || IS_2560(board))
|
#define HAS_PERSISTENT_TIMERS(board) (IS_ARM(board) || IS_2560(board))
|
||||||
#define HAS_LARGE_LCD(board) IS_TARANIS(board)
|
|
||||||
#define MAX_VIEWS(board) (HAS_LARGE_LCD(board) ? 2 : 256)
|
#define MAX_VIEWS(board) (HAS_LARGE_LCD(board) ? 2 : 256)
|
||||||
#define MAX_POTS(board, version) (IS_TARANIS(board) ? (IS_TARANIS_X9E(board) ? 4 : (version >= 216 ? 3 : 2)) : 3)
|
#define MAX_POTS(board, version) (board == BOARD_X7D ? 2 : (IS_TARANIS(board) ? (IS_TARANIS_X9E(board) ? 4 : (version >= 216 ? 3 : 2)) : 3))
|
||||||
#define MAX_SLIDERS(board) (IS_TARANIS(board) ? (IS_TARANIS_X9E(board) ? 4 : 2) : 0)
|
#define MAX_SLIDERS(board) (board == BOARD_X7D ? 0 : (IS_TARANIS(board) ? (IS_TARANIS_X9E(board) ? 4 : 2) : 0))
|
||||||
#define MAX_SWITCHES(board, version) (IS_TARANIS(board) ? (IS_TARANIS_X9E(board) ? 18 : 8) : 7)
|
#define MAX_SWITCHES(board, version) (board == BOARD_X7D ? 6 : (IS_TARANIS(board) ? (IS_TARANIS_X9E(board) ? 18 : 8) : 7))
|
||||||
#define MAX_SWITCHES_POSITION(board, version) (IS_TARANIS_X9E(board) ? 18*3 : (IS_TARANIS(board) ? 8*3 : 9))
|
#define MAX_SWITCHES_POSITION(board, version) (board == BOARD_X7D ? 6*3 : (IS_TARANIS_X9E(board) ? 18*3 : (IS_TARANIS(board) ? 8*3 : 9)))
|
||||||
#define MAX_ROTARY_ENCODERS(board) (IS_2560(board) ? 2 : (IS_SKY9X(board) ? 1 : 0))
|
#define MAX_ROTARY_ENCODERS(board) (IS_2560(board) ? 2 : (IS_SKY9X(board) ? 1 : 0))
|
||||||
#define MAX_FLIGHT_MODES(board, version) (IS_ARM(board) ? 9 : (IS_DBLRAM(board, version) ? 6 : 5))
|
#define MAX_FLIGHT_MODES(board, version) (IS_ARM(board) ? 9 : (IS_DBLRAM(board, version) ? 6 : 5))
|
||||||
#define MAX_TIMERS(board, version) ((IS_ARM(board) && version >= 217) ? 3 : 2)
|
#define MAX_TIMERS(board, version) ((IS_ARM(board) && version >= 217) ? 3 : 2)
|
||||||
|
@ -24,7 +23,7 @@
|
||||||
#define MAX_EXPOS(board, version) (IS_ARM(board) ? ((IS_TARANIS(board) && version >= 216) ? 64 : 32) : (IS_DBLRAM(board, version) ? 16 : 14))
|
#define MAX_EXPOS(board, version) (IS_ARM(board) ? ((IS_TARANIS(board) && version >= 216) ? 64 : 32) : (IS_DBLRAM(board, version) ? 16 : 14))
|
||||||
#define MAX_LOGICAL_SWITCHES(board, version) (IS_ARM(board) ? (version >= 218 ? 64 : 32) : ((IS_DBLEEPROM(board, version) && version<217) ? 15 : 12))
|
#define MAX_LOGICAL_SWITCHES(board, version) (IS_ARM(board) ? (version >= 218 ? 64 : 32) : ((IS_DBLEEPROM(board, version) && version<217) ? 15 : 12))
|
||||||
#define MAX_CUSTOM_FUNCTIONS(board, version) (IS_ARM(board) ? (version >= 216 ? 64 : 32) : (IS_DBLEEPROM(board, version) ? 24 : 16))
|
#define MAX_CUSTOM_FUNCTIONS(board, version) (IS_ARM(board) ? (version >= 216 ? 64 : 32) : (IS_DBLEEPROM(board, version) ? 24 : 16))
|
||||||
#define MAX_CURVES(board, version) (IS_ARM(board) ? ((IS_TARANIS(board) && version >= 216) ? 32 : 16) : 8)
|
#define MAX_CURVES(board, version) (IS_ARM(board) ? ((HAS_LARGE_LCD(board) && version >= 216) ? 32 : 16) : 8)
|
||||||
#define MAX_GVARS(board, version) ((IS_ARM(board) && version >= 216) ? 9 : 5)
|
#define MAX_GVARS(board, version) ((IS_ARM(board) && version >= 216) ? 9 : 5)
|
||||||
#define MAX_TELEMETRY_SENSORS(board, version) (32)
|
#define MAX_TELEMETRY_SENSORS(board, version) (32)
|
||||||
#define NUM_PPM_INPUTS(board, version) ((IS_ARM(board) && version >= 216) ? 16 : 8)
|
#define NUM_PPM_INPUTS(board, version) ((IS_ARM(board) && version >= 216) ? 16 : 8)
|
||||||
|
@ -794,6 +793,12 @@ class FlightModeField: public TransformedField {
|
||||||
for (int i=0; i<NUM_STICKS; i++)
|
for (int i=0; i<NUM_STICKS; i++)
|
||||||
internalField.Append(new SignedField<2>(trimExt[i]));
|
internalField.Append(new SignedField<2>(trimExt[i]));
|
||||||
}
|
}
|
||||||
|
else if (IS_ARM(board) && version >= 218) {
|
||||||
|
for (int i=0; i<NUM_STICKS; i++) {
|
||||||
|
internalField.Append(new SignedField<11>(phase.trim[i]));
|
||||||
|
internalField.Append(new UnsignedField<5>(trimMode[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (IS_TARANIS(board) && version >= 216) {
|
else if (IS_TARANIS(board) && version >= 216) {
|
||||||
for (int i=0; i<NUM_STICKS; i++) {
|
for (int i=0; i<NUM_STICKS; i++) {
|
||||||
internalField.Append(new SignedField<11>(phase.trim[i]));
|
internalField.Append(new SignedField<11>(phase.trim[i]));
|
||||||
|
@ -932,7 +937,7 @@ class MixField: public TransformedField {
|
||||||
version(version),
|
version(version),
|
||||||
model(model)
|
model(model)
|
||||||
{
|
{
|
||||||
if (IS_TARANIS(board) && version >= 218) {
|
if (IS_ARM(board) && version >= 218) {
|
||||||
internalField.Append(new SignedField<11>(_weight));
|
internalField.Append(new SignedField<11>(_weight));
|
||||||
internalField.Append(new UnsignedField<5>(_destCh));
|
internalField.Append(new UnsignedField<5>(_destCh));
|
||||||
internalField.Append(new SourceField<10>(mix.srcRaw, board, version, FLAG_NOTELEMETRY));
|
internalField.Append(new SourceField<10>(mix.srcRaw, board, version, FLAG_NOTELEMETRY));
|
||||||
|
@ -948,7 +953,10 @@ class MixField: public TransformedField {
|
||||||
internalField.Append(new UnsignedField<8>(mix.delayDown));
|
internalField.Append(new UnsignedField<8>(mix.delayDown));
|
||||||
internalField.Append(new UnsignedField<8>(mix.speedUp));
|
internalField.Append(new UnsignedField<8>(mix.speedUp));
|
||||||
internalField.Append(new UnsignedField<8>(mix.speedDown));
|
internalField.Append(new UnsignedField<8>(mix.speedDown));
|
||||||
|
if (HAS_LARGE_LCD(board))
|
||||||
internalField.Append(new ZCharField<8>(mix.name));
|
internalField.Append(new ZCharField<8>(mix.name));
|
||||||
|
else
|
||||||
|
internalField.Append(new ZCharField<6>(mix.name));
|
||||||
}
|
}
|
||||||
else if (IS_TARANIS(board) && version >= 217) {
|
else if (IS_TARANIS(board) && version >= 217) {
|
||||||
internalField.Append(new UnsignedField<8>(_destCh));
|
internalField.Append(new UnsignedField<8>(_destCh));
|
||||||
|
@ -1218,7 +1226,7 @@ class InputField: public TransformedField {
|
||||||
board(board),
|
board(board),
|
||||||
version(version)
|
version(version)
|
||||||
{
|
{
|
||||||
if (IS_TARANIS(board) && version >= 218) {
|
if (IS_ARM(board) && version >= 218) {
|
||||||
internalField.Append(new UnsignedField<2>(expo.mode, "Mode"));
|
internalField.Append(new UnsignedField<2>(expo.mode, "Mode"));
|
||||||
internalField.Append(new UnsignedField<14>(expo.scale, "Scale"));
|
internalField.Append(new UnsignedField<14>(expo.scale, "Scale"));
|
||||||
internalField.Append(new SourceField<10>(expo.srcRaw, board, version, 0));
|
internalField.Append(new SourceField<10>(expo.srcRaw, board, version, 0));
|
||||||
|
@ -1228,7 +1236,10 @@ class InputField: public TransformedField {
|
||||||
internalField.Append(new UnsignedField<9>(expo.flightModes));
|
internalField.Append(new UnsignedField<9>(expo.flightModes));
|
||||||
internalField.Append(new SignedField<8>(_weight, "Weight"));
|
internalField.Append(new SignedField<8>(_weight, "Weight"));
|
||||||
internalField.Append(new SpareBitsField<1>());
|
internalField.Append(new SpareBitsField<1>());
|
||||||
|
if (HAS_LARGE_LCD(board))
|
||||||
internalField.Append(new ZCharField<8>(expo.name));
|
internalField.Append(new ZCharField<8>(expo.name));
|
||||||
|
else
|
||||||
|
internalField.Append(new ZCharField<6>(expo.name));
|
||||||
internalField.Append(new SignedField<8>(_offset, "Offset"));
|
internalField.Append(new SignedField<8>(_offset, "Offset"));
|
||||||
internalField.Append(new CurveReferenceField(expo.curve, board, version));
|
internalField.Append(new CurveReferenceField(expo.curve, board, version));
|
||||||
}
|
}
|
||||||
|
@ -1416,7 +1427,27 @@ class LimitField: public StructField {
|
||||||
LimitField(LimitData & limit, BoardEnum board, unsigned int version):
|
LimitField(LimitData & limit, BoardEnum board, unsigned int version):
|
||||||
StructField("Limit")
|
StructField("Limit")
|
||||||
{
|
{
|
||||||
if (IS_TARANIS(board) && version >= 217) {
|
if (IS_ARM(board) && version >= 218) {
|
||||||
|
if (HAS_LARGE_LCD(board)) {
|
||||||
|
Append(new ConversionField< SignedField<11> >(limit.min, exportLimitValue<1000, 1024>, importLimitValue<1000, 1024>));
|
||||||
|
Append(new ConversionField< SignedField<11> >(limit.max, exportLimitValue<-1000, 1024>, importLimitValue<-1000, 1024>));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Append(new ConversionField< SignedField<11> >(limit.min, +100, 10));
|
||||||
|
Append(new ConversionField< SignedField<11> >(limit.max, -100, 10));
|
||||||
|
}
|
||||||
|
Append(new SignedField<10>(limit.ppmCenter));
|
||||||
|
Append(new ConversionField< SignedField<11> >(limit.offset, exportLimitValue<0, 1024>, importLimitValue<0, 1024>));
|
||||||
|
Append(new BoolField<1>(limit.symetrical));
|
||||||
|
Append(new BoolField<1>(limit.revert));
|
||||||
|
Append(new SpareBitsField<3>());
|
||||||
|
Append(new SignedField<8>(limit.curve.value));
|
||||||
|
if (HAS_LARGE_LCD(board))
|
||||||
|
Append(new ZCharField<6>(limit.name));
|
||||||
|
else
|
||||||
|
Append(new ZCharField<4>(limit.name));
|
||||||
|
}
|
||||||
|
else if (IS_TARANIS(board) && version >= 217) {
|
||||||
Append(new ConversionField< SignedField<11> >(limit.min, exportLimitValue<1000, 1024>, importLimitValue<1000, 1024>));
|
Append(new ConversionField< SignedField<11> >(limit.min, exportLimitValue<1000, 1024>, importLimitValue<1000, 1024>));
|
||||||
Append(new ConversionField< SignedField<11> >(limit.max, exportLimitValue<-1000, 1024>, importLimitValue<-1000, 1024>));
|
Append(new ConversionField< SignedField<11> >(limit.max, exportLimitValue<-1000, 1024>, importLimitValue<-1000, 1024>));
|
||||||
Append(new SignedField<10>(limit.ppmCenter));
|
Append(new SignedField<10>(limit.ppmCenter));
|
||||||
|
@ -1425,10 +1456,8 @@ class LimitField: public StructField {
|
||||||
Append(new BoolField<1>(limit.revert));
|
Append(new BoolField<1>(limit.revert));
|
||||||
Append(new SpareBitsField<3>());
|
Append(new SpareBitsField<3>());
|
||||||
Append(new SignedField<8>(limit.curve.value));
|
Append(new SignedField<8>(limit.curve.value));
|
||||||
if (HAS_LARGE_LCD(board)) {
|
|
||||||
Append(new ZCharField<6>(limit.name));
|
Append(new ZCharField<6>(limit.name));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
if (IS_TARANIS(board) && version >= 216) {
|
if (IS_TARANIS(board) && version >= 216) {
|
||||||
Append(new ConversionField< SignedField<16> >(limit.min, exportLimitValue<1000, 4096>, importLimitValue<1000, 4096>));
|
Append(new ConversionField< SignedField<16> >(limit.min, exportLimitValue<1000, 4096>, importLimitValue<1000, 4096>));
|
||||||
|
@ -1466,7 +1495,7 @@ class CurvesField: public TransformedField {
|
||||||
maxPoints(IS_ARM(board) ? 512 : 112-8)
|
maxPoints(IS_ARM(board) ? 512 : 112-8)
|
||||||
{
|
{
|
||||||
for (int i=0; i<maxCurves; i++) {
|
for (int i=0; i<maxCurves; i++) {
|
||||||
if (IS_TARANIS(board) && version >= 218) {
|
if (IS_ARM(board) && version >= 218) {
|
||||||
internalField.Append(new UnsignedField<1>((unsigned int &)curves[i].type));
|
internalField.Append(new UnsignedField<1>((unsigned int &)curves[i].type));
|
||||||
internalField.Append(new BoolField<1>(curves[i].smooth));
|
internalField.Append(new BoolField<1>(curves[i].smooth));
|
||||||
internalField.Append(new ConversionField< SignedField<6> >(curves[i].count, -5));
|
internalField.Append(new ConversionField< SignedField<6> >(curves[i].count, -5));
|
||||||
|
@ -2523,7 +2552,7 @@ class FrskyScreenField: public DataField {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int columns = (IS_TARANIS(board) ? 3 : 2);
|
int columns = (HAS_LARGE_LCD(board) ? 3 : 2);
|
||||||
for (int i=0; i<4; i++) {
|
for (int i=0; i<4; i++) {
|
||||||
for (int j=0; j<columns; j++) {
|
for (int j=0; j<columns; j++) {
|
||||||
if (IS_TARANIS(board) && version >= 217)
|
if (IS_TARANIS(board) && version >= 217)
|
||||||
|
@ -2968,7 +2997,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
|
||||||
internalField.Append(new UnsignedField<8>(modelData.moduleData[1].modelId));
|
internalField.Append(new UnsignedField<8>(modelData.moduleData[1].modelId));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_TARANIS(board) && version >= 215) {
|
if (HAS_LARGE_LCD(board) && version >= 215) {
|
||||||
internalField.Append(new CharField<10>(modelData.bitmap));
|
internalField.Append(new CharField<10>(modelData.bitmap));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2981,7 +3010,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
|
||||||
internalField.Append(new BoolField<1>(modelData.timers[i].minuteBeep));
|
internalField.Append(new BoolField<1>(modelData.timers[i].minuteBeep));
|
||||||
internalField.Append(new UnsignedField<2>(modelData.timers[i].persistent));
|
internalField.Append(new UnsignedField<2>(modelData.timers[i].persistent));
|
||||||
internalField.Append(new SpareBitsField<3>());
|
internalField.Append(new SpareBitsField<3>());
|
||||||
if (IS_TARANIS(board))
|
if (HAS_LARGE_LCD(board))
|
||||||
internalField.Append(new ZCharField<8>(modelData.timers[i].name));
|
internalField.Append(new ZCharField<8>(modelData.timers[i].name));
|
||||||
else
|
else
|
||||||
internalField.Append(new ZCharField<3>(modelData.timers[i].name));
|
internalField.Append(new ZCharField<3>(modelData.timers[i].name));
|
||||||
|
@ -3119,15 +3148,18 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
|
||||||
else if (version >= 216)
|
else if (version >= 216)
|
||||||
internalField.Append(new UnsignedField<8>(modelData.switchWarningEnable));
|
internalField.Append(new UnsignedField<8>(modelData.switchWarningEnable));
|
||||||
|
|
||||||
if ((board == BOARD_STOCK || (board == BOARD_M128 && version >= 215)) && (variant & GVARS_VARIANT)) {
|
|
||||||
for (int i=0; i<MAX_GVARS(board, version); i++) {
|
|
||||||
// on M64 GVARS are common to all phases, and there is no name
|
|
||||||
internalField.Append(new SignedField<16>(modelData.flightModeData[0].gvars[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (board != BOARD_STOCK && (board != BOARD_M128 || version < 215)) {
|
if (board != BOARD_STOCK && (board != BOARD_M128 || version < 215)) {
|
||||||
for (int i=0; i<MAX_GVARS(board, version); i++) {
|
for (int i=0; i<MAX_GVARS(board, version); i++) {
|
||||||
|
if (version >= 218) {
|
||||||
|
internalField.Append(new ZCharField<3>(modelData.gvars_names[i]));
|
||||||
|
internalField.Append(new SpareBitsField<12>()); // TODO min
|
||||||
|
internalField.Append(new SpareBitsField<12>()); // TODO max
|
||||||
|
internalField.Append(new BoolField<1>(modelData.gvars_popups[i]));
|
||||||
|
internalField.Append(new SpareBitsField<1>());
|
||||||
|
internalField.Append(new SpareBitsField<2>());
|
||||||
|
internalField.Append(new SpareBitsField<4>());
|
||||||
|
}
|
||||||
|
else {
|
||||||
internalField.Append(new ZCharField<6>(modelData.gvars_names[i]));
|
internalField.Append(new ZCharField<6>(modelData.gvars_names[i]));
|
||||||
if (version >= 216) {
|
if (version >= 216) {
|
||||||
internalField.Append(new BoolField<1>(modelData.gvars_popups[i]));
|
internalField.Append(new BoolField<1>(modelData.gvars_popups[i]));
|
||||||
|
@ -3135,6 +3167,13 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if (variant & GVARS_VARIANT) {
|
||||||
|
for (int i=0; i<MAX_GVARS(board, version); i++) {
|
||||||
|
// on M64 GVARS are common to all flight modes, and there is no name
|
||||||
|
internalField.Append(new SignedField<16>(modelData.flightModeData[0].gvars[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((board != BOARD_STOCK && (board != BOARD_M128 || version < 215)) || (variant & FRSKY_VARIANT)) {
|
if ((board != BOARD_STOCK && (board != BOARD_M128 || version < 215)) || (variant & FRSKY_VARIANT)) {
|
||||||
internalField.Append(new FrskyField(modelData.frsky, board, version, variant));
|
internalField.Append(new FrskyField(modelData.frsky, board, version, variant));
|
||||||
|
@ -3214,7 +3253,17 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_TARANIS(board)) {
|
if (IS_TARANIS(board)) {
|
||||||
if (version >= 217) {
|
if (version >= 218) {
|
||||||
|
for (int i=0; i<7; i++) {
|
||||||
|
ScriptData & script = modelData.scriptData[i];
|
||||||
|
internalField.Append(new CharField<6>(script.filename));
|
||||||
|
internalField.Append(new ZCharField<6>(script.name));
|
||||||
|
for (int j=0; j<6; j++) {
|
||||||
|
internalField.Append(new SignedField<16>(script.inputs[j]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (version >= 217) {
|
||||||
for (int i=0; i<7; i++) {
|
for (int i=0; i<7; i++) {
|
||||||
ScriptData & script = modelData.scriptData[i];
|
ScriptData & script = modelData.scriptData[i];
|
||||||
internalField.Append(new CharField<8>(script.filename));
|
internalField.Append(new CharField<8>(script.filename));
|
||||||
|
@ -3238,7 +3287,10 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
|
||||||
|
|
||||||
if (IS_TARANIS(board) && version >= 216) {
|
if (IS_TARANIS(board) && version >= 216) {
|
||||||
for (int i=0; i<32; i++) {
|
for (int i=0; i<32; i++) {
|
||||||
|
if (HAS_LARGE_LCD(board))
|
||||||
internalField.Append(new ZCharField<4>(modelData.inputNames[i]));
|
internalField.Append(new ZCharField<4>(modelData.inputNames[i]));
|
||||||
|
else
|
||||||
|
internalField.Append(new ZCharField<3>(modelData.inputNames[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3375,6 +3427,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo
|
||||||
|
|
||||||
if (version >= 216) {
|
if (version >= 216) {
|
||||||
for (int i=0; i<inputsCount; i++) {
|
for (int i=0; i<inputsCount; i++) {
|
||||||
|
qDebug() << "CALIB" << i;
|
||||||
internalField.Append(new SignedField<16>(generalData.calibMid[i]));
|
internalField.Append(new SignedField<16>(generalData.calibMid[i]));
|
||||||
internalField.Append(new SignedField<16>(generalData.calibSpanNeg[i]));
|
internalField.Append(new SignedField<16>(generalData.calibSpanNeg[i]));
|
||||||
internalField.Append(new SignedField<16>(generalData.calibSpanPos[i]));
|
internalField.Append(new SignedField<16>(generalData.calibSpanPos[i]));
|
||||||
|
|
|
@ -63,12 +63,14 @@ const char * OpenTxEepromInterface::getName()
|
||||||
return "OpenTX for MEGA2560 board";
|
return "OpenTX for MEGA2560 board";
|
||||||
case BOARD_GRUVIN9X:
|
case BOARD_GRUVIN9X:
|
||||||
return "OpenTX for Gruvin9x board / 9X";
|
return "OpenTX for Gruvin9x board / 9X";
|
||||||
case BOARD_TARANIS:
|
case BOARD_TARANIS_X9D:
|
||||||
return "OpenTX for FrSky Taranis";
|
return "OpenTX for FrSky Taranis X9D";
|
||||||
case BOARD_TARANIS_PLUS:
|
case BOARD_TARANIS_X9DP:
|
||||||
return "OpenTX for FrSky Taranis Plus";
|
return "OpenTX for FrSky Taranis X9D+";
|
||||||
case BOARD_TARANIS_X9E:
|
case BOARD_TARANIS_X9E:
|
||||||
return "OpenTX for FrSky Taranis X9E";
|
return "OpenTX for FrSky Taranis X9E";
|
||||||
|
case BOARD_X7D:
|
||||||
|
return "OpenTX for FrSky X7D";
|
||||||
case BOARD_SKY9X:
|
case BOARD_SKY9X:
|
||||||
return "OpenTX for Sky9x board / 9X";
|
return "OpenTX for Sky9x board / 9X";
|
||||||
case BOARD_9XRPRO:
|
case BOARD_9XRPRO:
|
||||||
|
@ -99,8 +101,9 @@ const int OpenTxEepromInterface::getEEpromSize()
|
||||||
case BOARD_9XRPRO:
|
case BOARD_9XRPRO:
|
||||||
case BOARD_AR9X:
|
case BOARD_AR9X:
|
||||||
return EESIZE_9XRPRO;
|
return EESIZE_9XRPRO;
|
||||||
case BOARD_TARANIS:
|
case BOARD_X7D:
|
||||||
case BOARD_TARANIS_PLUS:
|
case BOARD_TARANIS_X9D:
|
||||||
|
case BOARD_TARANIS_X9DP:
|
||||||
case BOARD_TARANIS_X9E:
|
case BOARD_TARANIS_X9E:
|
||||||
case BOARD_FLAMENCO:
|
case BOARD_FLAMENCO:
|
||||||
case BOARD_HORUS:
|
case BOARD_HORUS:
|
||||||
|
@ -320,7 +323,7 @@ unsigned long OpenTxEepromInterface::loadxml(RadioData &radioData, QDomDocument
|
||||||
return errors.to_ulong();
|
return errors.to_ulong();
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long OpenTxEepromInterface::load(RadioData &radioData, const uint8_t *eeprom, int size)
|
unsigned long OpenTxEepromInterface::load(RadioData & radioData, const uint8_t * eeprom, int size)
|
||||||
{
|
{
|
||||||
std::cout << "trying " << getName() << " import...";
|
std::cout << "trying " << getName() << " import...";
|
||||||
|
|
||||||
|
@ -403,8 +406,9 @@ int OpenTxEepromInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t
|
||||||
|
|
||||||
if (!version) {
|
if (!version) {
|
||||||
switch(board) {
|
switch(board) {
|
||||||
case BOARD_TARANIS:
|
case BOARD_X7D:
|
||||||
case BOARD_TARANIS_PLUS:
|
case BOARD_TARANIS_X9D:
|
||||||
|
case BOARD_TARANIS_X9DP:
|
||||||
case BOARD_TARANIS_X9E:
|
case BOARD_TARANIS_X9E:
|
||||||
case BOARD_SKY9X:
|
case BOARD_SKY9X:
|
||||||
case BOARD_AR9X:
|
case BOARD_AR9X:
|
||||||
|
@ -527,7 +531,7 @@ Firmware * OpenTxFirmware::getFirmwareVariant(const QString & id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int OpenTxFirmware::getCapability(const Capability capability)
|
int OpenTxFirmware::getCapability(Capability capability)
|
||||||
{
|
{
|
||||||
switch (capability) {
|
switch (capability) {
|
||||||
case Imperial:
|
case Imperial:
|
||||||
|
@ -536,15 +540,9 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||||
else
|
else
|
||||||
return id.contains("imperial") ? 1 : 0;
|
return id.contains("imperial") ? 1 : 0;
|
||||||
case ModelImage:
|
case ModelImage:
|
||||||
if (IS_TARANIS(board))
|
return (board==BOARD_TARANIS_X9D || board==BOARD_TARANIS_X9DP || board==BOARD_TARANIS_X9E);
|
||||||
return 1;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
case HasBeeper:
|
case HasBeeper:
|
||||||
if (IS_ARM(board))
|
return (!IS_ARM(board));
|
||||||
return 0;
|
|
||||||
else
|
|
||||||
return 1;
|
|
||||||
case HasPxxCountry:
|
case HasPxxCountry:
|
||||||
return 1;
|
return 1;
|
||||||
case HasGeneralUnits:
|
case HasGeneralUnits:
|
||||||
|
@ -553,10 +551,7 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
case HasNegAndSwitches:
|
case HasNegAndSwitches:
|
||||||
if (IS_ARM(board))
|
return IS_ARM(board);
|
||||||
return 1;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
case PPMExtCtrl:
|
case PPMExtCtrl:
|
||||||
return 1;
|
return 1;
|
||||||
case PPMFrameLength:
|
case PPMFrameLength:
|
||||||
|
@ -582,6 +577,8 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||||
return IS_ARM(board) ? 9 : 5;
|
return IS_ARM(board) ? 9 : 5;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
case ModelName:
|
||||||
|
return (HAS_LARGE_LCD(board) ? 12 : 10);
|
||||||
case FlightModesName:
|
case FlightModesName:
|
||||||
return (IS_TARANIS(board) ? 10 : 6);
|
return (IS_TARANIS(board) ? 10 : 6);
|
||||||
case GvarsName:
|
case GvarsName:
|
||||||
|
@ -599,21 +596,25 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||||
case Timers:
|
case Timers:
|
||||||
return (IS_ARM(board) ? 3 : 2);
|
return (IS_ARM(board) ? 3 : 2);
|
||||||
case TimersName:
|
case TimersName:
|
||||||
return (IS_TARANIS(board) ? 8 : (IS_ARM(board) ? 3 : 0));
|
return (HAS_LARGE_LCD(board) ? 8 : (IS_ARM(board) ? 3 : 0));
|
||||||
case PermTimers:
|
case PermTimers:
|
||||||
if (IS_2560(board) || IS_ARM(board))
|
if (IS_2560(board) || IS_ARM(board))
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
case Pots:
|
case Pots:
|
||||||
if (IS_TARANIS_X9E(board))
|
if (board == BOARD_X7D)
|
||||||
|
return 2;
|
||||||
|
else if (IS_TARANIS_X9E(board))
|
||||||
return 4;
|
return 4;
|
||||||
else if (IS_TARANIS(board))
|
else if (IS_TARANIS(board))
|
||||||
return 3; //Taranis has only 2 pots but still has a placeholder in settings for 3 pots
|
return 3; //Taranis has only 2 pots but still has a placeholder in settings for 3 pots
|
||||||
else
|
else
|
||||||
return 3;
|
return 3;
|
||||||
case Sliders:
|
case Sliders:
|
||||||
if (IS_TARANIS_X9E(board))
|
if (board == BOARD_X7D)
|
||||||
|
return 0;
|
||||||
|
else if (IS_TARANIS_X9E(board))
|
||||||
return 4;
|
return 4;
|
||||||
else if (IS_TARANIS(board))
|
else if (IS_TARANIS(board))
|
||||||
return 2;
|
return 2;
|
||||||
|
@ -622,6 +623,8 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||||
case Switches:
|
case Switches:
|
||||||
if (IS_TARANIS_X9E(board))
|
if (IS_TARANIS_X9E(board))
|
||||||
return 18;
|
return 18;
|
||||||
|
else if (board == BOARD_X7D)
|
||||||
|
return 6;
|
||||||
else if (IS_TARANIS(board))
|
else if (IS_TARANIS(board))
|
||||||
return 8;
|
return 8;
|
||||||
else
|
else
|
||||||
|
@ -691,7 +694,7 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||||
case Simulation:
|
case Simulation:
|
||||||
return 1;
|
return 1;
|
||||||
case NumCurves:
|
case NumCurves:
|
||||||
return (IS_TARANIS(board) ? 32 : (IS_ARM(board) ? 16 : 8));
|
return (HAS_LARGE_LCD(board) ? 32 : (IS_ARM(board) ? 16 : 8));
|
||||||
case HasMixerNames:
|
case HasMixerNames:
|
||||||
return (IS_ARM(board) ? (IS_TARANIS(board) ? 8 : 6) : false);
|
return (IS_ARM(board) ? (IS_TARANIS(board) ? 8 : 6) : false);
|
||||||
case HasExpoNames:
|
case HasExpoNames:
|
||||||
|
@ -699,7 +702,7 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||||
case HasNoExpo:
|
case HasNoExpo:
|
||||||
return (IS_TARANIS(board) ? false : true);
|
return (IS_TARANIS(board) ? false : true);
|
||||||
case ChannelsName:
|
case ChannelsName:
|
||||||
return (IS_TARANIS(board) ? 6 : 0);
|
return (IS_ARM(board) ? (HAS_LARGE_LCD(board) ? 6 : 4) : 0);
|
||||||
case HasCvNames:
|
case HasCvNames:
|
||||||
return (IS_TARANIS(board) ? 1 : 0);
|
return (IS_TARANIS(board) ? 1 : 0);
|
||||||
case Telemetry:
|
case Telemetry:
|
||||||
|
@ -712,7 +715,7 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||||
case TelemetryCustomScreens:
|
case TelemetryCustomScreens:
|
||||||
return IS_ARM(board) ? 4 : 2;
|
return IS_ARM(board) ? 4 : 2;
|
||||||
case TelemetryCustomScreensFieldsPerLine:
|
case TelemetryCustomScreensFieldsPerLine:
|
||||||
return IS_TARANIS(board) ? 3 : 2;
|
return HAS_LARGE_LCD(board) ? 3 : 2;
|
||||||
case NoTelemetryProtocol:
|
case NoTelemetryProtocol:
|
||||||
return IS_TARANIS(board) ? 1 : 0;
|
return IS_TARANIS(board) ? 1 : 0;
|
||||||
case TelemetryUnits:
|
case TelemetryUnits:
|
||||||
|
@ -813,6 +816,50 @@ int OpenTxFirmware::getCapability(const Capability capability)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Firmware::Switch OpenTxFirmware::getSwitch(unsigned int index)
|
||||||
|
{
|
||||||
|
if (board == BOARD_X7D) {
|
||||||
|
const Switch switches[] = { { SWITCH_3POS, "SA" },
|
||||||
|
{ SWITCH_3POS, "SB" },
|
||||||
|
{ SWITCH_3POS, "SC" },
|
||||||
|
{ SWITCH_3POS, "SD" },
|
||||||
|
{ SWITCH_2POS, "SF" },
|
||||||
|
{ SWITCH_TOGGLE, "SH" } };
|
||||||
|
return switches[index];
|
||||||
|
}
|
||||||
|
else if (IS_TARANIS(board) || board == BOARD_HORUS) {
|
||||||
|
const Switch switches[] = { { SWITCH_3POS, "SA" },
|
||||||
|
{ SWITCH_3POS, "SB" },
|
||||||
|
{ SWITCH_3POS, "SC" },
|
||||||
|
{ SWITCH_3POS, "SD" },
|
||||||
|
{ SWITCH_3POS, "SE" },
|
||||||
|
{ SWITCH_2POS, "SF" },
|
||||||
|
{ SWITCH_3POS, "SG" },
|
||||||
|
{ SWITCH_TOGGLE, "SH" },
|
||||||
|
{ SWITCH_3POS, "SI" },
|
||||||
|
{ SWITCH_3POS, "SJ" },
|
||||||
|
{ SWITCH_3POS, "SK" },
|
||||||
|
{ SWITCH_3POS, "SL" },
|
||||||
|
{ SWITCH_3POS, "SM" },
|
||||||
|
{ SWITCH_3POS, "SN" },
|
||||||
|
{ SWITCH_3POS, "SO" },
|
||||||
|
{ SWITCH_3POS, "SP" },
|
||||||
|
{ SWITCH_3POS, "SQ" },
|
||||||
|
{ SWITCH_3POS, "SR" } };
|
||||||
|
return switches[index];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const Switch switches[] = {{SWITCH_3POS, "3POS"},
|
||||||
|
{SWITCH_2POS, "THR"},
|
||||||
|
{SWITCH_2POS, "RUD"},
|
||||||
|
{SWITCH_2POS, "ELE"},
|
||||||
|
{SWITCH_2POS, "AIL"},
|
||||||
|
{SWITCH_2POS, "GEA"},
|
||||||
|
{SWITCH_TOGGLE, "SH"}};
|
||||||
|
return switches[index];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QTime OpenTxFirmware::getMaxTimerStart()
|
QTime OpenTxFirmware::getMaxTimerStart()
|
||||||
{
|
{
|
||||||
if (IS_TARANIS(board) || IS_HORUS(board))
|
if (IS_TARANIS(board) || IS_HORUS(board))
|
||||||
|
@ -1036,7 +1083,7 @@ unsigned long OpenTxEepromInterface::loadBackup(RadioData &radioData, uint8_t *e
|
||||||
BoardEnum backupBoard = (BoardEnum)-1;
|
BoardEnum backupBoard = (BoardEnum)-1;
|
||||||
switch (eeprom[3]) {
|
switch (eeprom[3]) {
|
||||||
case 0x33:
|
case 0x33:
|
||||||
backupBoard = BOARD_TARANIS;
|
backupBoard = BOARD_TARANIS_X9D;
|
||||||
break;
|
break;
|
||||||
case 0x32:
|
case 0x32:
|
||||||
backupBoard = BOARD_SKY9X;
|
backupBoard = BOARD_SKY9X;
|
||||||
|
@ -1176,27 +1223,33 @@ void registerOpenTxFirmwares()
|
||||||
Option nav_options[] = { { "rotenc", QObject::tr("Rotary Encoder use in menus navigation") }, { "potscroll", QObject::tr("Pots use in menus navigation") }, { NULL } };
|
Option nav_options[] = { { "rotenc", QObject::tr("Rotary Encoder use in menus navigation") }, { "potscroll", QObject::tr("Pots use in menus navigation") }, { NULL } };
|
||||||
Option dsm2_options[] = { { "DSM2", QObject::tr("Support for DSM2 modules"), 0 }, { "DSM2PPM", QObject::tr("Support for DSM2 modules using ppm instead of true serial"), 0 }, { NULL } };
|
Option dsm2_options[] = { { "DSM2", QObject::tr("Support for DSM2 modules"), 0 }, { "DSM2PPM", QObject::tr("Support for DSM2 modules using ppm instead of true serial"), 0 }, { NULL } };
|
||||||
|
|
||||||
/* Taranis Plus board */
|
/* FrSky Taranis X9D+ board */
|
||||||
firmware = new OpenTxFirmware("opentx-x9d+", QObject::tr("FrSky Taranis Plus"), BOARD_TARANIS_PLUS);
|
firmware = new OpenTxFirmware("opentx-x9d+", QObject::tr("FrSky Taranis X9D+"), BOARD_TARANIS_X9DP);
|
||||||
addOpenTxTaranisOptions(firmware);
|
addOpenTxTaranisOptions(firmware);
|
||||||
addOpenTxCommonOptions(firmware);
|
addOpenTxCommonOptions(firmware);
|
||||||
firmwares.push_back(firmware);
|
firmwares.push_back(firmware);
|
||||||
|
|
||||||
/* Taranis board */
|
/* FrSky Taranis X9D board */
|
||||||
firmware = new OpenTxFirmware("opentx-x9d", QObject::tr("FrSky Taranis"), BOARD_TARANIS);
|
firmware = new OpenTxFirmware("opentx-x9d", QObject::tr("FrSky Taranis X9D"), BOARD_TARANIS_X9D);
|
||||||
firmware->addOption("haptic", QObject::tr("Haptic module installed"));
|
firmware->addOption("haptic", QObject::tr("Haptic module installed"));
|
||||||
addOpenTxTaranisOptions(firmware);
|
addOpenTxTaranisOptions(firmware);
|
||||||
addOpenTxCommonOptions(firmware);
|
addOpenTxCommonOptions(firmware);
|
||||||
firmwares.push_back(firmware);
|
firmwares.push_back(firmware);
|
||||||
|
|
||||||
/* Taranis X9E board */
|
/* FrSky Taranis X9E board */
|
||||||
firmware = new OpenTxFirmware("opentx-x9e", QObject::tr("FrSky Taranis X9E"), BOARD_TARANIS_X9E);
|
firmware = new OpenTxFirmware("opentx-x9e", QObject::tr("FrSky Taranis X9E"), BOARD_TARANIS_X9E);
|
||||||
firmware->addOption("shutdownconfirm", QObject::tr("Confirmation before radio shutdown"));
|
firmware->addOption("shutdownconfirm", QObject::tr("Confirmation before radio shutdown"));
|
||||||
addOpenTxTaranisOptions(firmware);
|
addOpenTxTaranisOptions(firmware);
|
||||||
addOpenTxCommonOptions(firmware);
|
addOpenTxCommonOptions(firmware);
|
||||||
firmwares.push_back(firmware);
|
firmwares.push_back(firmware);
|
||||||
|
|
||||||
/* Horus board */
|
/* FrSky X7D board */
|
||||||
|
firmware = new OpenTxFirmware("opentx-x7d", QObject::tr("FrSky X7D"), BOARD_X7D);
|
||||||
|
addOpenTxTaranisOptions(firmware);
|
||||||
|
addOpenTxCommonOptions(firmware);
|
||||||
|
firmwares.push_back(firmware);
|
||||||
|
|
||||||
|
/* FrSky Horus board */
|
||||||
firmware = new OpenTxFirmware("opentx-horus", QObject::tr("FrSky Horus"), BOARD_HORUS);
|
firmware = new OpenTxFirmware("opentx-horus", QObject::tr("FrSky Horus"), BOARD_HORUS);
|
||||||
firmware->addOption("noheli", QObject::tr("Disable HELI menu and cyclic mix support"));
|
firmware->addOption("noheli", QObject::tr("Disable HELI menu and cyclic mix support"));
|
||||||
firmware->addOption("nogvars", QObject::tr("Disable Global variables"));
|
firmware->addOption("nogvars", QObject::tr("Disable Global variables"));
|
||||||
|
|
|
@ -117,7 +117,9 @@ class OpenTxFirmware: public Firmware {
|
||||||
|
|
||||||
virtual QString getFirmwareUrl();
|
virtual QString getFirmwareUrl();
|
||||||
|
|
||||||
virtual int getCapability(const Capability);
|
virtual int getCapability(Capability);
|
||||||
|
|
||||||
|
virtual Switch getSwitch(unsigned int index);
|
||||||
|
|
||||||
virtual QTime getMaxTimerStart();
|
virtual QTime getMaxTimerStart();
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ void HardwarePanel::setupSwitchConfig(int index, QLabel *label, AutoLineEdit *na
|
||||||
if (IS_TARANIS(firmware->getBoard())) {
|
if (IS_TARANIS(firmware->getBoard())) {
|
||||||
if (IS_TARANIS_X9E(firmware->getBoard())) {
|
if (IS_TARANIS_X9E(firmware->getBoard())) {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
type->addItem(tr("None"), GeneralSettings::SWITCH_NONE);
|
type->addItem(tr("None"), Firmware::SWITCH_NONE);
|
||||||
}
|
}
|
||||||
else if (index < 8) {
|
else if (index < 8) {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
@ -16,9 +16,9 @@ void HardwarePanel::setupSwitchConfig(int index, QLabel *label, AutoLineEdit *na
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
type->addItem(tr("2 Positions Toggle"), GeneralSettings::SWITCH_TOGGLE);
|
type->addItem(tr("2 Positions Toggle"), Firmware::SWITCH_TOGGLE);
|
||||||
type->addItem(tr("2 Positions"), GeneralSettings::SWITCH_2POS);
|
type->addItem(tr("2 Positions"), Firmware::SWITCH_2POS);
|
||||||
if (threePos) type->addItem(tr("3 Positions"), GeneralSettings::SWITCH_3POS);
|
if (threePos) type->addItem(tr("3 Positions"), Firmware::SWITCH_3POS);
|
||||||
name->setField(generalSettings.switchName[index], 3, this);
|
name->setField(generalSettings.switchName[index], 3, this);
|
||||||
type->setField(generalSettings.switchConfig[index], this);
|
type->setField(generalSettings.switchConfig[index], this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -804,7 +804,7 @@ void startSimulation(QWidget * parent, RadioData & radioData, int modelIdx)
|
||||||
else if (board == BOARD_FLAMENCO) {
|
else if (board == BOARD_FLAMENCO) {
|
||||||
sd = new SimulatorDialogFlamenco(parent, si, flags);
|
sd = new SimulatorDialogFlamenco(parent, si, flags);
|
||||||
}
|
}
|
||||||
else if (IS_TARANIS(board)) {
|
else if (board == BOARD_TARANIS_X9D || board == BOARD_TARANIS_X9DP || board == BOARD_TARANIS_X9E) {
|
||||||
for (int i=0; i<GetCurrentFirmware()->getCapability(Pots); i++) {
|
for (int i=0; i<GetCurrentFirmware()->getCapability(Pots); i++) {
|
||||||
if (radioData.generalSettings.isPotAvailable(i)) {
|
if (radioData.generalSettings.isPotAvailable(i)) {
|
||||||
flags |= (SIMULATOR_FLAGS_S1 << i);
|
flags |= (SIMULATOR_FLAGS_S1 << i);
|
||||||
|
|
|
@ -178,7 +178,7 @@ void MdiChild::modelEdit()
|
||||||
else {
|
else {
|
||||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||||
checkAndInitModel( row );
|
checkAndInitModel( row );
|
||||||
ModelData &model = radioData.models[row - 1];
|
ModelData & model = radioData.models[row - 1];
|
||||||
gStopwatch.restart();
|
gStopwatch.restart();
|
||||||
gStopwatch.report("ModelEdit creation");
|
gStopwatch.report("ModelEdit creation");
|
||||||
ModelEdit *t = new ModelEdit(this, radioData, (row - 1), GetCurrentFirmware()/*firmware*/);
|
ModelEdit *t = new ModelEdit(this, radioData, (row - 1), GetCurrentFirmware()/*firmware*/);
|
||||||
|
@ -213,7 +213,7 @@ void MdiChild::openEditWindow()
|
||||||
generalEdit();
|
generalEdit();
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
ModelData &model = radioData.models[row - 1];
|
ModelData & model = radioData.models[row - 1];
|
||||||
if (model.isEmpty() && g.useWizard()) {
|
if (model.isEmpty() && g.useWizard()) {
|
||||||
wizardEdit();
|
wizardEdit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ LimitsGroup::LimitsGroup(Firmware * firmware, TableLayout * tableLayout, int row
|
||||||
spinbox->setSuffix("%");
|
spinbox->setSuffix("%");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_TARANIS(board) || deflt == 0 /*it's the offset*/) {
|
if (HAS_LARGE_LCD(board) || deflt == 0 /*it's the offset*/) {
|
||||||
spinbox->setDecimals(1);
|
spinbox->setDecimals(1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -181,8 +181,7 @@ ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i=0; i<=MM_RF_PROTO_LAST; i++)
|
for (int i=0; i<=MM_RF_PROTO_LAST; i++) {
|
||||||
{
|
|
||||||
ui->multiProtocol->addItem(ModelPrinter::printMultiRfProtocol(i, false), (QVariant) i);
|
ui->multiProtocol->addItem(ModelPrinter::printMultiRfProtocol(i, false), (QVariant) i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -531,7 +530,7 @@ void ModulePanel::updateFailsafe(int channel)
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware):
|
SetupPanel::SetupPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware):
|
||||||
ModelPanel(parent, model, generalSettings, firmware),
|
ModelPanel(parent, model, generalSettings, firmware),
|
||||||
ui(new Ui::Setup)
|
ui(new Ui::Setup)
|
||||||
{
|
{
|
||||||
|
@ -545,7 +544,7 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen
|
||||||
|
|
||||||
QRegExp rx(CHAR_FOR_NAMES_REGEX);
|
QRegExp rx(CHAR_FOR_NAMES_REGEX);
|
||||||
ui->name->setValidator(new QRegExpValidator(rx, this));
|
ui->name->setValidator(new QRegExpValidator(rx, this));
|
||||||
ui->name->setMaxLength(IS_TARANIS(board) ? 12 : 10);
|
ui->name->setMaxLength(firmware->getCapability(ModelName));
|
||||||
|
|
||||||
if (firmware->getCapability(ModelImage)) {
|
if (firmware->getCapability(ModelImage)) {
|
||||||
QStringList items;
|
QStringList items;
|
||||||
|
@ -594,7 +593,7 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen
|
||||||
ui->imagePreview->hide();
|
ui->imagePreview->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *prevFocus = ui->image;
|
QWidget * prevFocus = ui->image;
|
||||||
for (int i=0; i<C9X_MAX_TIMERS; i++) {
|
for (int i=0; i<C9X_MAX_TIMERS; i++) {
|
||||||
if (i<firmware->getCapability(Timers)) {
|
if (i<firmware->getCapability(Timers)) {
|
||||||
timers[i] = new TimerPanel(this, model, model.timers[i], generalSettings, firmware, prevFocus);
|
timers[i] = new TimerPanel(this, model, model.timers[i], generalSettings, firmware, prevFocus);
|
||||||
|
@ -655,16 +654,13 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen
|
||||||
|
|
||||||
// Startup switches warnings
|
// Startup switches warnings
|
||||||
for (int i=0; i<firmware->getCapability(Switches); i++) {
|
for (int i=0; i<firmware->getCapability(Switches); i++) {
|
||||||
|
Firmware::Switch sw = firmware->getSwitch(i);
|
||||||
if (IS_TARANIS(firmware->getBoard())) {
|
if (IS_TARANIS(firmware->getBoard())) {
|
||||||
if (generalSettings.switchConfig[i] == GeneralSettings::SWITCH_NONE || generalSettings.switchConfig[i] == GeneralSettings::SWITCH_TOGGLE) {
|
sw.type = Firmware::SwitchType(generalSettings.switchConfig[i]);
|
||||||
|
}
|
||||||
|
if (sw.type == Firmware::SWITCH_NONE || sw.type == Firmware::SWITCH_TOGGLE) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (i==firmware->getCapability(Switches)-1) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
QLabel * label = new QLabel(this);
|
QLabel * label = new QLabel(this);
|
||||||
QSlider * slider = new QSlider(this);
|
QSlider * slider = new QSlider(this);
|
||||||
QCheckBox * cb = new QCheckBox(this);
|
QCheckBox * cb = new QCheckBox(this);
|
||||||
|
@ -678,14 +674,8 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen
|
||||||
slider->setSingleStep(1);
|
slider->setSingleStep(1);
|
||||||
slider->setPageStep(1);
|
slider->setPageStep(1);
|
||||||
slider->setTickInterval(1);
|
slider->setTickInterval(1);
|
||||||
if (IS_TARANIS(board)) {
|
label->setText(sw.name);
|
||||||
label->setText(switchesX9D[i]);
|
slider->setMaximum(sw.type == Firmware::SWITCH_3POS ? 2 : 1);
|
||||||
slider->setMaximum(generalSettings.switchConfig[i] == GeneralSettings::SWITCH_3POS ? 2 : 1);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
label->setText(switches9X[i]);
|
|
||||||
slider->setMaximum(i==0 ? 2 : 1);
|
|
||||||
}
|
|
||||||
cb->setProperty("index", i);
|
cb->setProperty("index", i);
|
||||||
ui->switchesStartupLayout->addWidget(label, 0, i+1);
|
ui->switchesStartupLayout->addWidget(label, 0, i+1);
|
||||||
ui->switchesStartupLayout->setAlignment(label, Qt::AlignCenter);
|
ui->switchesStartupLayout->setAlignment(label, Qt::AlignCenter);
|
||||||
|
@ -701,7 +691,6 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen
|
||||||
QWidget::setTabOrder(slider, cb);
|
QWidget::setTabOrder(slider, cb);
|
||||||
prevFocus = cb;
|
prevFocus = cb;
|
||||||
}
|
}
|
||||||
ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, firmware->getCapability(Switches));
|
|
||||||
|
|
||||||
// Pot warnings
|
// Pot warnings
|
||||||
prevFocus = ui->potWarningMode;
|
prevFocus = ui->potWarningMode;
|
||||||
|
@ -931,7 +920,7 @@ void SetupPanel::updateStartupSwitches()
|
||||||
bool enabled = !(model->switchWarningEnable & (1 << index));
|
bool enabled = !(model->switchWarningEnable & (1 << index));
|
||||||
if (IS_TARANIS(GetEepromInterface()->getBoard())) {
|
if (IS_TARANIS(GetEepromInterface()->getBoard())) {
|
||||||
value = (switchStates >> 2*index) & 0x03;
|
value = (switchStates >> 2*index) & 0x03;
|
||||||
if (generalSettings.switchConfig[index] != GeneralSettings::SWITCH_3POS && value == 2)
|
if (generalSettings.switchConfig[index] != Firmware::SWITCH_3POS && value == 2)
|
||||||
value = 1;
|
value = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -969,7 +958,7 @@ void SetupPanel::startupSwitchEdited(int value)
|
||||||
|
|
||||||
model->switchWarningStates &= ~mask;
|
model->switchWarningStates &= ~mask;
|
||||||
|
|
||||||
if (IS_TARANIS(GetEepromInterface()->getBoard()) && generalSettings.switchConfig[index] != GeneralSettings::SWITCH_3POS) {
|
if (IS_TARANIS(GetEepromInterface()->getBoard()) && generalSettings.switchConfig[index] != Firmware::SWITCH_3POS) {
|
||||||
if (value == 1) value = 2;
|
if (value == 1) value = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,14 +55,14 @@ SimulatorDialog9X::SimulatorDialog9X(QWidget * parent, SimulatorInterface *simul
|
||||||
if (g.simuSW())
|
if (g.simuSW())
|
||||||
restoreSwitches();
|
restoreSwitches();
|
||||||
|
|
||||||
ui->trimHR_L->setText(QString::fromUtf8(leftArrow));
|
ui->trimHR_L->setText(QString::fromUtf8(ARROW_LEFT));
|
||||||
ui->trimHR_R->setText(QString::fromUtf8(rightArrow));
|
ui->trimHR_R->setText(QString::fromUtf8(ARROW_RIGHT));
|
||||||
ui->trimVR_U->setText(QString::fromUtf8(upArrow));
|
ui->trimVR_U->setText(QString::fromUtf8(ARROW_UP));
|
||||||
ui->trimVR_D->setText(QString::fromUtf8(downArrow));
|
ui->trimVR_D->setText(QString::fromUtf8(ARROW_DOWN));
|
||||||
ui->trimHL_L->setText(QString::fromUtf8(leftArrow));
|
ui->trimHL_L->setText(QString::fromUtf8(ARROW_LEFT));
|
||||||
ui->trimHL_R->setText(QString::fromUtf8(rightArrow));
|
ui->trimHL_R->setText(QString::fromUtf8(ARROW_RIGHT));
|
||||||
ui->trimVL_U->setText(QString::fromUtf8(upArrow));
|
ui->trimVL_U->setText(QString::fromUtf8(ARROW_UP));
|
||||||
ui->trimVL_D->setText(QString::fromUtf8(downArrow));
|
ui->trimVL_D->setText(QString::fromUtf8(ARROW_DOWN));
|
||||||
for (int i=0; i<pots.count(); i++) {
|
for (int i=0; i<pots.count(); i++) {
|
||||||
pots[i]->setProperty("index", i);
|
pots[i]->setProperty("index", i);
|
||||||
connect(pots[i], SIGNAL(valueChanged(int)), this, SLOT(dialChanged(int)));
|
connect(pots[i], SIGNAL(valueChanged(int)), this, SLOT(dialChanged(int)));
|
||||||
|
|
|
@ -25,14 +25,14 @@ SimulatorDialogFlamenco::SimulatorDialogFlamenco(QWidget * parent, SimulatorInte
|
||||||
if (g.simuSW())
|
if (g.simuSW())
|
||||||
restoreSwitches();
|
restoreSwitches();
|
||||||
|
|
||||||
ui->trimHR_L->setText(QString::fromUtf8(leftArrow));
|
ui->trimHR_L->setText(QString::fromUtf8(ARROW_LEFT));
|
||||||
ui->trimHR_R->setText(QString::fromUtf8(rightArrow));
|
ui->trimHR_R->setText(QString::fromUtf8(ARROW_RIGHT));
|
||||||
ui->trimVR_U->setText(QString::fromUtf8(upArrow));
|
ui->trimVR_U->setText(QString::fromUtf8(ARROW_UP));
|
||||||
ui->trimVR_D->setText(QString::fromUtf8(downArrow));
|
ui->trimVR_D->setText(QString::fromUtf8(ARROW_DOWN));
|
||||||
ui->trimHL_L->setText(QString::fromUtf8(leftArrow));
|
ui->trimHL_L->setText(QString::fromUtf8(ARROW_LEFT));
|
||||||
ui->trimHL_R->setText(QString::fromUtf8(rightArrow));
|
ui->trimHL_R->setText(QString::fromUtf8(ARROW_RIGHT));
|
||||||
ui->trimVL_U->setText(QString::fromUtf8(upArrow));
|
ui->trimVL_U->setText(QString::fromUtf8(ARROW_UP));
|
||||||
ui->trimVL_D->setText(QString::fromUtf8(downArrow));
|
ui->trimVL_D->setText(QString::fromUtf8(ARROW_DOWN));
|
||||||
|
|
||||||
connect(ui->leftbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
connect(ui->leftbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
||||||
connect(ui->rightbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
connect(ui->rightbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
||||||
|
|
|
@ -43,14 +43,14 @@ SimulatorDialogHorus::SimulatorDialogHorus(QWidget * parent, SimulatorInterface
|
||||||
if (g.simuSW())
|
if (g.simuSW())
|
||||||
restoreSwitches();
|
restoreSwitches();
|
||||||
|
|
||||||
ui->trimHR_L->setText(QString::fromUtf8(leftArrow));
|
ui->trimHR_L->setText(QString::fromUtf8(ARROW_LEFT));
|
||||||
ui->trimHR_R->setText(QString::fromUtf8(rightArrow));
|
ui->trimHR_R->setText(QString::fromUtf8(ARROW_RIGHT));
|
||||||
ui->trimVR_U->setText(QString::fromUtf8(upArrow));
|
ui->trimVR_U->setText(QString::fromUtf8(ARROW_UP));
|
||||||
ui->trimVR_D->setText(QString::fromUtf8(downArrow));
|
ui->trimVR_D->setText(QString::fromUtf8(ARROW_DOWN));
|
||||||
ui->trimHL_L->setText(QString::fromUtf8(leftArrow));
|
ui->trimHL_L->setText(QString::fromUtf8(ARROW_LEFT));
|
||||||
ui->trimHL_R->setText(QString::fromUtf8(rightArrow));
|
ui->trimHL_R->setText(QString::fromUtf8(ARROW_RIGHT));
|
||||||
ui->trimVL_U->setText(QString::fromUtf8(upArrow));
|
ui->trimVL_U->setText(QString::fromUtf8(ARROW_UP));
|
||||||
ui->trimVL_D->setText(QString::fromUtf8(downArrow));
|
ui->trimVL_D->setText(QString::fromUtf8(ARROW_DOWN));
|
||||||
|
|
||||||
connect(ui->leftbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
connect(ui->leftbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
||||||
connect(ui->rightbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
connect(ui->rightbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
||||||
|
|
|
@ -50,14 +50,14 @@ SimulatorDialogTaranis::SimulatorDialogTaranis(QWidget * parent, SimulatorInterf
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->trimHR_L->setText(QString::fromUtf8(leftArrow));
|
ui->trimHR_L->setText(QString::fromUtf8(ARROW_LEFT));
|
||||||
ui->trimHR_R->setText(QString::fromUtf8(rightArrow));
|
ui->trimHR_R->setText(QString::fromUtf8(ARROW_RIGHT));
|
||||||
ui->trimVR_U->setText(QString::fromUtf8(upArrow));
|
ui->trimVR_U->setText(QString::fromUtf8(ARROW_UP));
|
||||||
ui->trimVR_D->setText(QString::fromUtf8(downArrow));
|
ui->trimVR_D->setText(QString::fromUtf8(ARROW_DOWN));
|
||||||
ui->trimHL_L->setText(QString::fromUtf8(leftArrow));
|
ui->trimHL_L->setText(QString::fromUtf8(ARROW_LEFT));
|
||||||
ui->trimHL_R->setText(QString::fromUtf8(rightArrow));
|
ui->trimHL_R->setText(QString::fromUtf8(ARROW_RIGHT));
|
||||||
ui->trimVL_U->setText(QString::fromUtf8(upArrow));
|
ui->trimVL_U->setText(QString::fromUtf8(ARROW_UP));
|
||||||
ui->trimVL_D->setText(QString::fromUtf8(downArrow));
|
ui->trimVL_D->setText(QString::fromUtf8(ARROW_DOWN));
|
||||||
|
|
||||||
connect(ui->leftbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
connect(ui->leftbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
||||||
connect(ui->rightbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
connect(ui->rightbuttons, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
|
||||||
|
|
|
@ -24,7 +24,7 @@ void registerSimulator(const QString &filename)
|
||||||
typedef SimulatorFactory * (*RegisterSimulator)();
|
typedef SimulatorFactory * (*RegisterSimulator)();
|
||||||
RegisterSimulator registerSimulator = (RegisterSimulator)lib.resolve("registerSimu");
|
RegisterSimulator registerSimulator = (RegisterSimulator)lib.resolve("registerSimu");
|
||||||
if (registerSimulator) {
|
if (registerSimulator) {
|
||||||
SimulatorFactory *factory = registerSimulator();
|
SimulatorFactory * factory = registerSimulator();
|
||||||
registerSimulatorFactory(factory);
|
registerSimulatorFactory(factory);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -157,7 +157,7 @@ int main(int argc, char *argv[])
|
||||||
options.add("help", "show this help text");
|
options.add("help", "show this help text");
|
||||||
options.alias("help", "h");
|
options.alias("help", "h");
|
||||||
options.parse(QCoreApplication::arguments());
|
options.parse(QCoreApplication::arguments());
|
||||||
if(options.count("help") || options.showUnrecognizedWarning()) {
|
if (options.count("help") || options.showUnrecognizedWarning()) {
|
||||||
QString msg;
|
QString msg;
|
||||||
QTextStream stream(&msg);
|
QTextStream stream(&msg);
|
||||||
stream << "Usage: simulator [OPTION]... [EEPROM.BIN FILE] " << endl << endl;
|
stream << "Usage: simulator [OPTION]... [EEPROM.BIN FILE] " << endl << endl;
|
||||||
|
@ -216,7 +216,7 @@ int main(int argc, char *argv[])
|
||||||
qDebug() << "eepromFileName" << eepromFileName;
|
qDebug() << "eepromFileName" << eepromFileName;
|
||||||
// TODO display used eeprom filename somewhere
|
// TODO display used eeprom filename somewhere
|
||||||
|
|
||||||
SimulatorFactory *factory = getSimulatorFactory(firmwareId);
|
SimulatorFactory * factory = getSimulatorFactory(firmwareId);
|
||||||
if (!factory) {
|
if (!factory) {
|
||||||
showMessage(QObject::tr("ERROR: Simulator %1 not found").arg(firmwareId), QMessageBox::Critical);
|
showMessage(QObject::tr("ERROR: Simulator %1 not found").arg(firmwareId), QMessageBox::Critical);
|
||||||
return 2;
|
return 2;
|
||||||
|
@ -225,7 +225,7 @@ int main(int argc, char *argv[])
|
||||||
dialog = new SimulatorDialogHorus(NULL, factory->create());
|
dialog = new SimulatorDialogHorus(NULL, factory->create());
|
||||||
else if (factory->type() == BOARD_FLAMENCO)
|
else if (factory->type() == BOARD_FLAMENCO)
|
||||||
dialog = new SimulatorDialogFlamenco(NULL, factory->create());
|
dialog = new SimulatorDialogFlamenco(NULL, factory->create());
|
||||||
else if (factory->type() == BOARD_TARANIS)
|
else if (factory->type() == BOARD_TARANIS_X9D || factory->type() == BOARD_TARANIS_X9DP || factory->type() == BOARD_TARANIS_X9E)
|
||||||
dialog = new SimulatorDialogTaranis(NULL, factory->create(), SIMULATOR_FLAGS_S1|SIMULATOR_FLAGS_S2);
|
dialog = new SimulatorDialogTaranis(NULL, factory->create(), SIMULATOR_FLAGS_S1|SIMULATOR_FLAGS_S2);
|
||||||
else
|
else
|
||||||
dialog = new SimulatorDialog9X(NULL, factory->create());
|
dialog = new SimulatorDialog9X(NULL, factory->create());
|
||||||
|
|
|
@ -164,7 +164,7 @@ enum CurveType {
|
||||||
#define LEN_TIMER_NAME 3
|
#define LEN_TIMER_NAME 3
|
||||||
#define LEN_FLIGHT_MODE_NAME 6
|
#define LEN_FLIGHT_MODE_NAME 6
|
||||||
#define LEN_EXPOMIX_NAME 6
|
#define LEN_EXPOMIX_NAME 6
|
||||||
#define LEN_CHANNEL_NAME 6
|
#define LEN_CHANNEL_NAME 4
|
||||||
#define LEN_INPUT_NAME 3
|
#define LEN_INPUT_NAME 3
|
||||||
#define LEN_CURVE_NAME 3
|
#define LEN_CURVE_NAME 3
|
||||||
#define LEN_FUNCTION_NAME 6
|
#define LEN_FUNCTION_NAME 6
|
||||||
|
@ -530,12 +530,10 @@ enum PotsWarnMode {
|
||||||
#define MAX_GVARS 5
|
#define MAX_GVARS 5
|
||||||
#elif defined(PCBSTD)
|
#elif defined(PCBSTD)
|
||||||
#define MAX_GVARS 0
|
#define MAX_GVARS 0
|
||||||
#else
|
#elif defined(CPUARM)
|
||||||
#if defined(CPUARM)
|
|
||||||
#define MAX_GVARS 9
|
#define MAX_GVARS 9
|
||||||
#else
|
#else
|
||||||
#define MAX_GVARS 5
|
#define MAX_GVARS 5
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum SwitchSources {
|
enum SwitchSources {
|
||||||
|
@ -836,21 +834,25 @@ enum MixSources {
|
||||||
MIXSRC_SB, LUA_EXPORT("sb", "Switch B")
|
MIXSRC_SB, LUA_EXPORT("sb", "Switch B")
|
||||||
MIXSRC_SC, LUA_EXPORT("sc", "Switch C")
|
MIXSRC_SC, LUA_EXPORT("sc", "Switch C")
|
||||||
MIXSRC_SD, LUA_EXPORT("sd", "Switch D")
|
MIXSRC_SD, LUA_EXPORT("sd", "Switch D")
|
||||||
|
#if !defined(PCBX7D)
|
||||||
MIXSRC_SE, LUA_EXPORT("se", "Switch E")
|
MIXSRC_SE, LUA_EXPORT("se", "Switch E")
|
||||||
|
#endif
|
||||||
MIXSRC_SF, LUA_EXPORT("sf", "Switch F")
|
MIXSRC_SF, LUA_EXPORT("sf", "Switch F")
|
||||||
|
#if !defined(PCBX7D)
|
||||||
MIXSRC_SG, LUA_EXPORT("sg", "Switch G")
|
MIXSRC_SG, LUA_EXPORT("sg", "Switch G")
|
||||||
|
#endif
|
||||||
MIXSRC_SH, LUA_EXPORT("sh", "Switch H")
|
MIXSRC_SH, LUA_EXPORT("sh", "Switch H")
|
||||||
#if defined(PCBX9E)
|
#if defined(PCBX9E)
|
||||||
MIXSRC_SI, LUA_EXPORT("si", "Switch I (X9E only)")
|
MIXSRC_SI, LUA_EXPORT("si", "Switch I")
|
||||||
MIXSRC_SJ, LUA_EXPORT("sj", "Switch J (X9E only)")
|
MIXSRC_SJ, LUA_EXPORT("sj", "Switch J")
|
||||||
MIXSRC_SK, LUA_EXPORT("sk", "Switch K (X9E only)")
|
MIXSRC_SK, LUA_EXPORT("sk", "Switch K")
|
||||||
MIXSRC_SL, LUA_EXPORT("sl", "Switch L (X9E only)")
|
MIXSRC_SL, LUA_EXPORT("sl", "Switch L")
|
||||||
MIXSRC_SM, LUA_EXPORT("sm", "Switch M (X9E only)")
|
MIXSRC_SM, LUA_EXPORT("sm", "Switch M")
|
||||||
MIXSRC_SN, LUA_EXPORT("sn", "Switch N (X9E only)")
|
MIXSRC_SN, LUA_EXPORT("sn", "Switch N")
|
||||||
MIXSRC_SO, LUA_EXPORT("so", "Switch O (X9E only)")
|
MIXSRC_SO, LUA_EXPORT("so", "Switch O")
|
||||||
MIXSRC_SP, LUA_EXPORT("sp", "Switch P (X9E only)")
|
MIXSRC_SP, LUA_EXPORT("sp", "Switch P")
|
||||||
MIXSRC_SQ, LUA_EXPORT("sq", "Switch Q (X9E only)")
|
MIXSRC_SQ, LUA_EXPORT("sq", "Switch Q")
|
||||||
MIXSRC_SR, LUA_EXPORT("sr", "Switch R (X9E only)")
|
MIXSRC_SR, LUA_EXPORT("sr", "Switch R")
|
||||||
MIXSRC_LAST_SWITCH = MIXSRC_SR,
|
MIXSRC_LAST_SWITCH = MIXSRC_SR,
|
||||||
#else
|
#else
|
||||||
MIXSRC_LAST_SWITCH = MIXSRC_SH,
|
MIXSRC_LAST_SWITCH = MIXSRC_SH,
|
||||||
|
@ -867,10 +869,6 @@ enum MixSources {
|
||||||
#endif
|
#endif
|
||||||
MIXSRC_FIRST_LOGICAL_SWITCH,
|
MIXSRC_FIRST_LOGICAL_SWITCH,
|
||||||
MIXSRC_SW1 = MIXSRC_FIRST_LOGICAL_SWITCH, LUA_EXPORT_MULTIPLE("ls", "Logical switch L%d", MAX_LOGICAL_SWITCHES)
|
MIXSRC_SW1 = MIXSRC_FIRST_LOGICAL_SWITCH, LUA_EXPORT_MULTIPLE("ls", "Logical switch L%d", MAX_LOGICAL_SWITCHES)
|
||||||
MIXSRC_SW9 = MIXSRC_SW1 + 8,
|
|
||||||
MIXSRC_SWA,
|
|
||||||
MIXSRC_SWB,
|
|
||||||
MIXSRC_SWC,
|
|
||||||
MIXSRC_LAST_LOGICAL_SWITCH = MIXSRC_FIRST_LOGICAL_SWITCH+MAX_LOGICAL_SWITCHES-1,
|
MIXSRC_LAST_LOGICAL_SWITCH = MIXSRC_FIRST_LOGICAL_SWITCH+MAX_LOGICAL_SWITCHES-1,
|
||||||
|
|
||||||
MIXSRC_FIRST_TRAINER, LUA_EXPORT_MULTIPLE("trn", "Trainer input %d", MAX_TRAINER_CHANNELS)
|
MIXSRC_FIRST_TRAINER, LUA_EXPORT_MULTIPLE("trn", "Trainer input %d", MAX_TRAINER_CHANNELS)
|
||||||
|
|
|
@ -38,9 +38,9 @@ void menuRadioTrainer(event_t event)
|
||||||
|
|
||||||
y = MENU_HEADER_HEIGHT + 1 + FH;
|
y = MENU_HEADER_HEIGHT + 1 + FH;
|
||||||
|
|
||||||
for (uint8_t i=HEADER_LINE; i<HEADER_LINE+NUM_STICKS; i++) {
|
for (uint8_t i=0; i<NUM_STICKS; i++) {
|
||||||
uint8_t chan = channel_order(i);
|
uint8_t chan = channel_order(i+1);
|
||||||
volatile TrainerMix *td = &g_eeGeneral.trainer.mix[chan-1];
|
volatile TrainerMix * td = &g_eeGeneral.trainer.mix[chan-1];
|
||||||
|
|
||||||
drawSource(0, y, MIXSRC_Rud-1+chan, (menuVerticalPosition==i && CURSOR_ON_LINE()) ? INVERS : 0);
|
drawSource(0, y, MIXSRC_Rud-1+chan, (menuVerticalPosition==i && CURSOR_ON_LINE()) ? INVERS : 0);
|
||||||
|
|
||||||
|
|
|
@ -1181,9 +1181,11 @@ const luaR_value_entry opentxConstants[] = {
|
||||||
{ "MIXSRC_SB", MIXSRC_SB },
|
{ "MIXSRC_SB", MIXSRC_SB },
|
||||||
{ "MIXSRC_SC", MIXSRC_SC },
|
{ "MIXSRC_SC", MIXSRC_SC },
|
||||||
{ "MIXSRC_SD", MIXSRC_SD },
|
{ "MIXSRC_SD", MIXSRC_SD },
|
||||||
|
#if !defined(PCBX7D)
|
||||||
{ "MIXSRC_SE", MIXSRC_SE },
|
{ "MIXSRC_SE", MIXSRC_SE },
|
||||||
{ "MIXSRC_SF", MIXSRC_SF },
|
|
||||||
{ "MIXSRC_SG", MIXSRC_SG },
|
{ "MIXSRC_SG", MIXSRC_SG },
|
||||||
|
#endif
|
||||||
|
{ "MIXSRC_SF", MIXSRC_SF },
|
||||||
{ "MIXSRC_SH", MIXSRC_SH },
|
{ "MIXSRC_SH", MIXSRC_SH },
|
||||||
{ "MIXSRC_CH1", MIXSRC_CH1 },
|
{ "MIXSRC_CH1", MIXSRC_CH1 },
|
||||||
{ "SWSRC_LAST", SWSRC_LAST_LOGICAL_SWITCH },
|
{ "SWSRC_LAST", SWSRC_LAST_LOGICAL_SWITCH },
|
||||||
|
|
|
@ -241,7 +241,7 @@ class OpenTxSimulatorFactory: public SimulatorFactory
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual SimulatorInterface *create()
|
virtual SimulatorInterface * create()
|
||||||
{
|
{
|
||||||
return new OpenTxSimulator();
|
return new OpenTxSimulator();
|
||||||
}
|
}
|
||||||
|
@ -257,8 +257,10 @@ class OpenTxSimulatorFactory: public SimulatorFactory
|
||||||
return BOARD_HORUS;
|
return BOARD_HORUS;
|
||||||
#elif defined(PCBFLAMENCO)
|
#elif defined(PCBFLAMENCO)
|
||||||
return BOARD_FLAMENCO;
|
return BOARD_FLAMENCO;
|
||||||
|
#elif defined(PCBX7D)
|
||||||
|
return BOARD_X7D;
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
return BOARD_TARANIS;
|
return BOARD_TARANIS_X9D;
|
||||||
#else
|
#else
|
||||||
return BOARD_STOCK;
|
return BOARD_STOCK;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -376,7 +376,7 @@ enum Analogs {
|
||||||
NUMBER_ANALOG
|
NUMBER_ANALOG
|
||||||
};
|
};
|
||||||
#define NUM_POTS (POT_LAST-POT_FIRST+1)
|
#define NUM_POTS (POT_LAST-POT_FIRST+1)
|
||||||
#define NUM_SLIDERS (TX_VOLTAGE-POT_FIRST-NUM_POTS)
|
#define NUM_SLIDERS (TX_VOLTAGE-POT_LAST-1)
|
||||||
#define NUM_XPOTS NUM_POTS
|
#define NUM_XPOTS NUM_POTS
|
||||||
#if defined(PCBX9D)
|
#if defined(PCBX9D)
|
||||||
#define IS_POT(x) ((x)>=POT_FIRST && (x)<=POT2) // POT3 is only defined in software
|
#define IS_POT(x) ((x)>=POT_FIRST && (x)<=POT2) // POT3 is only defined in software
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue