feat(cpn): iFlight Commando8 support (#2244)

* feat(cpn): Initial iFlight Commando8 support

* fix: Commando8 doesn't have trainer port

* feat: Add Simulator for iFlight Commando8
Also some minor code re-order for BetaFPV LR3PRO

* chore: EEPROM_VARIANT not used

* chore: Remove EEPROM bits that don't seem needed

* fix: Build simulator plugin

* fix: Simulator PGUP/PGDN the right way around

* fix: Keep trainer mode in cpn for MPM, etc
This commit is contained in:
Peter Feerick
2022-10-10 12:59:28 +10:00
committed by GitHub
parent a8f1973507
commit af45201f64
25 changed files with 329 additions and 48 deletions
+2
View File
@@ -325,6 +325,8 @@ elseif(PCB STREQUAL X7 AND PCBREV STREQUAL ZORRO)
set(FLAVOUR zorro)
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL LR3PRO)
set(FLAVOUR lr3pro)
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL COMMANDO8)
set(FLAVOUR commando8)
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T8)
set(FLAVOUR t8)
elseif(PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019)
+20 -10
View File
@@ -165,6 +165,26 @@
<file>images/simulator/XLITE/right_left.png</file>
<file>images/simulator/XLITE/right_up.png</file>
<file>images/simulator/XLITE/right_down.png</file>
<file>images/simulator/LR3PRO/top.png</file>
<file>images/simulator/LR3PRO/bottom.png</file>
<file>images/simulator/LR3PRO/left.png</file>
<file>images/simulator/LR3PRO/right.png</file>
<file>images/simulator/LR3PRO/right_plus.png</file>
<file>images/simulator/LR3PRO/right_minus.png</file>
<file>images/simulator/LR3PRO/right_up.png</file>
<file>images/simulator/LR3PRO/right_down.png</file>
<file>images/simulator/LR3PRO/right_enter.png</file>
<file>images/simulator/LR3PRO/left_escape.png</file>
<file>images/simulator/Commando8/left-mdl.png</file>
<file>images/simulator/Commando8/left-rtn.png</file>
<file>images/simulator/Commando8/left-sys.png</file>
<file>images/simulator/Commando8/right-up.png</file>
<file>images/simulator/Commando8/right-dn.png</file>
<file>images/simulator/Commando8/right-pageup.png</file>
<file>images/simulator/Commando8/right-pagedn.png</file>
<file>images/simulator/Commando8/right-ent.png</file>
<file>images/simulator/Commando8/top.png</file>
<file>images/simulator/Commando8/bottom.png</file>
<file>images/simulator/JumperT12/right_up.png</file>
<file>images/simulator/JumperT12/right_down.png</file>
<file>images/simulator/JumperT12/right_right.png</file>
@@ -214,16 +234,6 @@
<file>images/simulator/Zorro/right-mdl.png</file>
<file>images/simulator/Zorro/bottom.png</file>
<file>images/simulator/Zorro/top.png</file>
<file>images/simulator/LR3PRO/top.png</file>
<file>images/simulator/LR3PRO/bottom.png</file>
<file>images/simulator/LR3PRO/left.png</file>
<file>images/simulator/LR3PRO/right.png</file>
<file>images/simulator/LR3PRO/right_plus.png</file>
<file>images/simulator/LR3PRO/right_minus.png</file>
<file>images/simulator/LR3PRO/right_up.png</file>
<file>images/simulator/LR3PRO/right_down.png</file>
<file>images/simulator/LR3PRO/right_enter.png</file>
<file>images/simulator/LR3PRO/left_escape.png</file>
<file>images/simulator/T8/left.png</file>
<file>images/simulator/T8/left-pageup.png</file>
<file>images/simulator/T8/left-pagedn.png</file>
+22 -3
View File
@@ -81,6 +81,8 @@ uint32_t Boards::getFourCC(Type board)
return 0x3278746F;
case BOARD_BETAFPV_LR3PRO:
return 0x4578746F;
case BOARD_IFLIGHT_COMMANDO8:
return 0x4B78746F; // TODO : Check this value
case BOARD_JUMPER_T12:
return 0x3D78746F;
case BOARD_JUMPER_TLITE:
@@ -127,6 +129,7 @@ int Boards::getEEpromSize(Board::Type board)
case BOARD_TARANIS_X9DP_2019:
case BOARD_TARANIS_X9E:
case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12:
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TPRO:
@@ -169,6 +172,7 @@ int Boards::getFlashSize(Type board)
case BOARD_TARANIS_X9DP_2019:
case BOARD_TARANIS_X9E:
case BOARD_BETAFPV_LR3PRO:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_JUMPER_T12:
case BOARD_JUMPER_TLITE:
case BOARD_JUMPER_TPRO:
@@ -296,6 +300,16 @@ SwitchInfo Boards::getSwitchInfo(Board::Type board, int index)
if (index < DIM(switches))
return switches[index];
}
else if (IS_IFLIGHT_COMMANDO8(board)) {
const Board::SwitchInfo switches[] = {
{SWITCH_2POS, "SA"},
{SWITCH_3POS, "SB"},
{SWITCH_3POS, "SC"},
{SWITCH_2POS, "SD"}
};
if (index < DIM(switches))
return switches[index];
}
else if (IS_JUMPER_T12(board)) {
const Board::SwitchInfo switches[] = {
{SWITCH_3POS, "SA"},
@@ -388,7 +402,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
case Pots:
if (IS_TARANIS_X9LITE(board))
return 1;
else if (IS_JUMPER_TLITE(board) || IS_BETAFPV_LR3PRO(board))
else if (IS_JUMPER_TLITE(board) || IS_BETAFPV_LR3PRO(board) || IS_IFLIGHT_COMMANDO8(board))
return 0;
else if (IS_TARANIS_SMALL(board) || IS_JUMPER_TPRO(board))
return 2;
@@ -452,7 +466,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
return 7;
else if (board == BOARD_TARANIS_X7)
return 8;
else if (board == BOARD_JUMPER_TLITE || board == BOARD_JUMPER_TPRO || board == BOARD_BETAFPV_LR3PRO)
else if (board == BOARD_JUMPER_TLITE || board == BOARD_JUMPER_TPRO || board == BOARD_BETAFPV_LR3PRO || board == BOARD_IFLIGHT_COMMANDO8)
return 4;
else if (board == BOARD_FLYSKY_NV14)
return 8;
@@ -477,7 +491,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
case FactoryInstalledSwitches:
if (IS_TARANIS_X9E(board))
return 8;
else if (IS_JUMPER_TLITE(board) || IS_JUMPER_TPRO(board) || IS_BETAFPV_LR3PRO(board))
else if (IS_JUMPER_TLITE(board) || IS_JUMPER_TPRO(board) || IS_BETAFPV_LR3PRO(board) || IS_IFLIGHT_COMMANDO8(board))
return 4;
else if(IS_RADIOMASTER_ZORRO(board))
return 8;
@@ -501,6 +515,8 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
case NumTrims:
if (IS_FAMILY_HORUS_OR_T16(board) && !IS_FLYSKY_NV14(board))
return 6;
else if (IS_IFLIGHT_COMMANDO8(board))
return 0;
else
return 4;
@@ -697,6 +713,8 @@ QString Boards::getBoardName(Board::Type board)
return "FlySky NV14";
case BOARD_BETAFPV_LR3PRO:
return "BETAFPV LR3PRO";
case BOARD_IFLIGHT_COMMANDO8:
return "iFlight Commando 8";
default:
return CPN_STR_UNKNOWN_ITEM;
}
@@ -910,6 +928,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_RADIOMASTER_ZORRO:
case BOARD_BETAFPV_LR3PRO:
case BOARD_RADIOMASTER_TX12_MK2:
case BOARD_IFLIGHT_COMMANDO8:
return (int)MODULE_TYPE_CROSSFIRE;
case BOARD_FLYSKY_NV14:
+9 -2
View File
@@ -67,6 +67,7 @@ namespace Board {
BOARD_RADIOMASTER_ZORRO,
BOARD_JUMPER_TPRO,
BOARD_BETAFPV_LR3PRO,
BOARD_IFLIGHT_COMMANDO8,
BOARD_TYPE_COUNT,
BOARD_TYPE_MAX = BOARD_TYPE_COUNT - 1
};
@@ -249,6 +250,11 @@ inline bool IS_BETAFPV_LR3PRO(Board::Type board)
return board == Board::BOARD_BETAFPV_LR3PRO;
}
inline bool IS_IFLIGHT_COMMANDO8(Board::Type board)
{
return board == Board::BOARD_IFLIGHT_COMMANDO8;
}
inline bool IS_JUMPER_T12(Board::Type board)
{
return board == Board::BOARD_JUMPER_T12;
@@ -312,8 +318,9 @@ inline bool IS_FAMILY_T12(Board::Type board)
board == Board::BOARD_RADIOMASTER_ZORRO ||
board == Board::BOARD_RADIOMASTER_T8 ||
board == Board::BOARD_JUMPER_TLITE ||
board == Board::BOARD_JUMPER_TPRO ||
board == Board::BOARD_BETAFPV_LR3PRO ||
board == Board::BOARD_JUMPER_TPRO;
board == Board::BOARD_IFLIGHT_COMMANDO8;
}
inline bool IS_FLYSKY_NV14(Board::Type board)
@@ -373,7 +380,7 @@ inline bool IS_TARANIS_X9E(Board::Type board)
inline bool IS_TARANIS_SMALL(Board::Type board)
{
return IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board) || IS_FAMILY_T12(board) || IS_JUMPER_TPRO(board);
return IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board) || IS_FAMILY_T12(board);
}
inline bool IS_TARANIS(Board::Type board)
@@ -37,12 +37,13 @@
#define TARANIS_X9LITES_VARIANT 0x0801
#define JUMPER_T12_VARIANT 0x4001
#define RADIOMASTER_TX12_VARIANT 0x4002
#define BETAFPV_LR3PRO_VARIANT 0x4007
#define JUMPER_TLITE_VARIANT 0x4003
#define RADIOMASTER_T8_VARIANT 0x4004
#define RADIOMASTER_ZORRO_VARIANT 0x4006
#define JUMPER_TPRO_VARIANT 0x4005
#define RADIOMASTER_ZORRO_VARIANT 0x4006
#define BETAFPV_LR3PRO_VARIANT 0x4007
#define RADIOMASTER_TX12_MK2_VARIANT 0x4008
#define IFLIGHT_COMMANDO8_VARIANT 0x4009
class OpenTxGeneralData: public TransformedField {
public:
@@ -114,6 +114,8 @@ const char * OpenTxEepromInterface::getName()
return "EdgeTX for FlySky NV14";
case BOARD_BETAFPV_LR3PRO:
return "EdgeTx for BETAFPV LR3PRO";
case BOARD_IFLIGHT_COMMANDO8:
return "EdgeTX for iFlight Commando 8";
default:
return "Board is unknown to EdgeTX";
}
@@ -347,9 +349,6 @@ int OpenTxEepromInterface::save(uint8_t * eeprom, const RadioData & radioData, u
else if (IS_TARANIS_XLITE(board)) {
variant |= TARANIS_XLITE_VARIANT;
}
else if (IS_BETAFPV_LR3PRO(board)) {
variant |= BETAFPV_LR3PRO_VARIANT;
}
else if (IS_JUMPER_T12(board)) {
variant |= JUMPER_T12_VARIANT;
}
@@ -721,6 +720,8 @@ int OpenTxFirmware::getCapability(::Capability capability)
return TARANIS_XLITE_VARIANT;
else if (IS_BETAFPV_LR3PRO(board))
return BETAFPV_LR3PRO_VARIANT;
else if (IS_IFLIGHT_COMMANDO8(board))
return IFLIGHT_COMMANDO8_VARIANT;
else if (IS_JUMPER_T12(board))
return JUMPER_T12_VARIANT;
else if (IS_JUMPER_TLITE(board))
@@ -793,7 +794,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
case HasIntModuleCRSF:
return id.contains("internalcrsf");
case HasIntModuleELRS:
return id.contains("internalelrs") || IS_RADIOMASTER_TX12_MK2(board);
return id.contains("internalelrs") || IS_RADIOMASTER_TX12_MK2(board) || IS_IFLIGHT_COMMANDO8(board);
case HasIntModuleFlySky:
return id.contains("afhds3") || IS_FLYSKY_NV14(board);
default:
@@ -1068,11 +1069,6 @@ bool OpenTxEepromInterface::checkVariant(unsigned int version, unsigned int vari
variantError = true;
}
}
else if (IS_BETAFPV_LR3PRO(board)) {
if (variant != BETAFPV_LR3PRO_VARIANT) {
variantError = true;
}
}
else if (IS_JUMPER_T12(board)) {
if (variant != JUMPER_T12_VARIANT) {
variantError = true;
@@ -1523,6 +1519,16 @@ void registerOpenTxFirmwares()
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
/* Radiomaster T8 board */
firmware = new OpenTxFirmware(FIRMWAREID("commando8"), QCoreApplication::translate("Firmware", "iFlight Commando8"), BOARD_IFLIGHT_COMMANDO8);
addOpenTxCommonOptions(firmware);
firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support"));
firmware->addOption("nogvars", Firmware::tr("Disable Global variables"));
firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen"));
addOpenTxFontOptions(firmware);
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, NONE);
/* 9XR-Pro */
firmware = new OpenTxFirmware(FIRMWAREID("9xrpro"), Firmware::tr("Turnigy 9XR-PRO"), BOARD_9XRPRO);
addOpenTxArm9xOptions(firmware, false);
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

+4 -2
View File
@@ -12,6 +12,8 @@ set(simulation_SRCS
simulateduiwidgetX9D2019.cpp
simulateduiwidgetX10.cpp
simulateduiwidgetX12.cpp
simulateduiwidgetLR3PRO.cpp
simulateduiwidgetCommando8.cpp
simulateduiwidgetJumperT12.cpp
simulateduiwidgetJumperTLITE.cpp
simulateduiwidgetJumperTPRO.cpp
@@ -19,7 +21,6 @@ set(simulation_SRCS
simulateduiwidgetJumperT18.cpp
simulateduiwidgetTX12.cpp
simulateduiwidgetZorro.cpp
simulateduiwidgetLR3PRO.cpp
simulateduiwidgetT8.cpp
simulateduiwidgetTX16S.cpp
simulateduiwidgetNV14.cpp
@@ -46,6 +47,8 @@ set(simulation_UIS
simulateduiwidgetX9D2019.ui
simulateduiwidgetX10.ui
simulateduiwidgetX12.ui
simulateduiwidgetLR3PRO.ui
simulateduiwidgetCommando8.ui
simulateduiwidgetJumperT12.ui
simulateduiwidgetJumperTLITE.ui
simulateduiwidgetJumperTPRO.ui
@@ -53,7 +56,6 @@ set(simulation_UIS
simulateduiwidgetJumperT18.ui
simulateduiwidgetTX12.ui
simulateduiwidgetZorro.ui
simulateduiwidgetLR3PRO.ui
simulateduiwidgetT8.ui
simulateduiwidgetTX16S.ui
simulateduiwidgetNV14.ui
+26 -13
View File
@@ -111,6 +111,8 @@ namespace Ui {
class SimulatedUIWidgetX9D2019;
class SimulatedUIWidgetX10;
class SimulatedUIWidgetX12;
class SimulatedUIWidgetLR3PRO;
class SimulatedUIWidgetCommando8;
class SimulatedUIWidgetJumperT12;
class SimulatedUIWidgetJumperTLITE;
class SimulatedUIWidgetJumperTPRO;
@@ -119,7 +121,6 @@ namespace Ui {
class SimulatedUIWidgetTX16S;
class SimulatedUIWidgetTX12;
class SimulatedUIWidgetZorro;
class SimulatedUIWidgetLR3PRO;
class SimulatedUIWidgetT8;
class SimulatedUIWidgetNV14;
}
@@ -236,6 +237,30 @@ class SimulatedUIWidgetX12: public SimulatedUIWidget
Ui::SimulatedUIWidgetX12 * ui;
};
class SimulatedUIWidgetLR3PRO: public SimulatedUIWidget
{
Q_OBJECT
public:
explicit SimulatedUIWidgetLR3PRO(SimulatorInterface * simulator, QWidget * parent = NULL);
virtual ~SimulatedUIWidgetLR3PRO();
private:
Ui::SimulatedUIWidgetLR3PRO * ui;
};
class SimulatedUIWidgetCommando8: public SimulatedUIWidget
{
Q_OBJECT
public:
explicit SimulatedUIWidgetCommando8(SimulatorInterface * simulator, QWidget * parent = nullptr);
virtual ~SimulatedUIWidgetCommando8();
private:
Ui::SimulatedUIWidgetCommando8 * ui;
};
class SimulatedUIWidgetJumperT12: public SimulatedUIWidget
{
Q_OBJECT
@@ -272,18 +297,6 @@ class SimulatedUIWidgetJumperTPRO: public SimulatedUIWidget
Ui::SimulatedUIWidgetJumperTPRO * ui;
};
class SimulatedUIWidgetLR3PRO: public SimulatedUIWidget
{
Q_OBJECT
public:
explicit SimulatedUIWidgetLR3PRO(SimulatorInterface * simulator, QWidget * parent = NULL);
virtual ~SimulatedUIWidgetLR3PRO();
private:
Ui::SimulatedUIWidgetLR3PRO * ui;
};
class SimulatedUIWidgetJumperT16: public SimulatedUIWidget
{
Q_OBJECT
@@ -0,0 +1,67 @@
#include "simulateduiwidget.h"
#include "ui_simulateduiwidgetCommando8.h"
// NOTE: RadioUiAction(NUMBER,...): NUMBER relates to enum EnumKeys in the specific board.h
SimulatedUIWidgetCommando8::SimulatedUIWidgetCommando8(SimulatorInterface *simulator, QWidget * parent):
SimulatedUIWidget(simulator, parent),
ui(new Ui::SimulatedUIWidgetCommando8)
{
RadioUiAction * act;
ui->setupUi(this);
// add actions in order of appearance on the help menu
act = new RadioUiAction(5, QList<int>() << Qt::Key_Up, SIMU_STR_HLP_KEY_UP, SIMU_STR_HLP_ACT_MDL);
addRadioWidget(ui->bottom->addArea(QRect(50, 44, 18, 18), "Commando8/left-mdl.png", act));
act = new RadioUiAction(6, QList<int>() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_GO_UP, SIMU_STR_HLP_ACT_UP);
addRadioWidget(ui->bottom->addArea(QRect(248, 25, 18, 18), "Commando8/right-up.png", act));
act = new RadioUiAction(7, QList<int>() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_GO_DN, SIMU_STR_HLP_ACT_DN);
addRadioWidget(ui->bottom->addArea(QRect(248, 62, 18, 18), "Commando8/right-dn.png", act));
act = new RadioUiAction(1, QList<int>() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ENT);
addRadioWidget(ui->bottom->addArea(QRect(250, 45, 15, 15), "Commando8/right-ent.png", act));
act = new RadioUiAction(4, QList<int>() << Qt::Key_Left, SIMU_STR_HLP_KEY_LFT, SIMU_STR_HLP_ACT_SYS);
addRadioWidget(ui->bottom->addArea(QRect(34, 46, 15, 15), "Commando8/left-sys.png", act));
act = new RadioUiAction(0, QList<int>() << Qt::Key_Down << Qt::Key_Delete << Qt::Key_Escape << Qt::Key_Backspace, SIMU_STR_HLP_KEYS_EXIT, SIMU_STR_HLP_ACT_EXIT);
addRadioWidget(ui->bottom->addArea(QRect(14, 44, 18, 18), "Commando8/left-rtn.png", act));
act = new RadioUiAction(3, QList<int>() << Qt::Key_PageDown, SIMU_STR_HLP_KEY_PGDN, SIMU_STR_HLP_ACT_PGDN);
addRadioWidget(ui->bottom->addArea(QRect(267, 43, 18, 18), "Commando8/right-pagedn.png", act));
act = new RadioUiAction(2, QList<int>() << Qt::Key_PageUp, SIMU_STR_HLP_KEY_PGUP, SIMU_STR_HLP_ACT_PGUP);
addRadioWidget(ui->bottom->addArea(QRect(230, 43, 18, 18), "Commando8/right-pageup.png", act));
m_backlightColors << QColor(215, 243, 255); // X7 Blue
m_backlightColors << QColor(166,247,159);
m_backlightColors << QColor(247,159,166);
m_backlightColors << QColor(255,195,151);
m_backlightColors << QColor(247,242,159);
setLcd(ui->lcd);
QString css = "#radioUiWidget {"
"background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1,"
"stop:0 rgba(255, 255, 255, 255),"
"stop:0.757062 rgba(241, 238, 238, 255),"
"stop:1 rgba(247, 245, 245, 255));"
"}";
QTimer * tim = new QTimer(this);
tim->setSingleShot(true);
connect(tim, &QTimer::timeout, [this, css]() {
emit customStyleRequest(css);
});
tim->start(100);
}
SimulatedUIWidgetCommando8::~SimulatedUIWidgetCommando8()
{
delete ui;
}
@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SimulatedUIWidgetCommando8</class>
<widget class="QWidget" name="SimulatedUIWidgetCommando8">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>300</width>
<height>310</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>300</width>
<height>310</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>300</width>
<height>310</height>
</size>
</property>
<property name="windowTitle">
<string notr="true">iFlight Commando8 Simulator</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 255, 255, 255), stop:0.757062 rgba(241, 238, 238, 255), stop:1 rgba(247, 245, 245, 255));</string>
</property>
<widget class="QWidget" name="top" native="true">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>300</width>
<height>79</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>300</width>
<height>79</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>254</width>
<height>79</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background:url(:/images/simulator/Commando8/top.png)</string>
</property>
</widget>
<widget class="LcdWidget" name="lcd" native="true">
<property name="geometry">
<rect>
<x>22</x>
<y>80</y>
<width>256</width>
<height>128</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>256</width>
<height>128</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>256</width>
<height>128</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(215, 243, 255);</string>
</property>
</widget>
<widget class="ButtonsWidget" name="bottom" native="true">
<property name="geometry">
<rect>
<x>0</x>
<y>210</y>
<width>300</width>
<height>99</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>300</width>
<height>99</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>300</width>
<height>99</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background:url(:/images/simulator/Commando8/bottom.png)</string>
</property>
</widget>
</widget>
<customwidgets>
<customwidget>
<class>LcdWidget</class>
<extends>QWidget</extends>
<header>lcdwidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>ButtonsWidget</class>
<extends>QWidget</extends>
<header>buttonswidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../companion.qrc"/>
</resources>
<connections/>
</ui>
+6 -3
View File
@@ -88,6 +88,12 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato
case Board::BOARD_X10_EXPRESS:
radioUiWidget = new SimulatedUIWidgetX10(simulator, this);
break;
case Board::BOARD_BETAFPV_LR3PRO:
radioUiWidget = new SimulatedUIWidgetLR3PRO(simulator, this);
break;
case Board::BOARD_IFLIGHT_COMMANDO8:
radioUiWidget = new SimulatedUIWidgetCommando8(simulator, this);
break;
case Board::BOARD_JUMPER_T12:
radioUiWidget = new SimulatedUIWidgetJumperT12(simulator, this);
break;
@@ -110,9 +116,6 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato
case Board::BOARD_RADIOMASTER_ZORRO:
radioUiWidget = new SimulatedUIWidgetZorro(simulator, this);
break;
case Board::BOARD_BETAFPV_LR3PRO:
radioUiWidget = new SimulatedUIWidgetLR3PRO(simulator, this);
break;
case Board::BOARD_RADIOMASTER_T8:
radioUiWidget = new SimulatedUIWidgetT8(simulator, this);
break;
+1 -1
View File
@@ -882,7 +882,7 @@ bool isTrainerModeAvailable(int mode)
)
return false;
#if defined(PCBXLITE) && !defined(PCBXLITES)
#if (defined(PCBXLITE) && !defined(PCBXLITES)) || defined(RADIO_COMMANDO8)
if (mode == TRAINER_MODE_MASTER_TRAINER_JACK || mode == TRAINER_MODE_SLAVE)
return false;
#endif
+1 -1
View File
@@ -1,7 +1,7 @@
set(STORAGE_CONVERSIONS 219)
if(PCB STREQUAL X7)
if(PCBREV STREQUAL ZORRO OR PCBREV STREQUAL TPRO OR PCBREV STREQUAL TX12MK2 OR PCBREV STREQUAL LR3PRO)
if(PCBREV STREQUAL ZORRO OR PCBREV STREQUAL TPRO OR PCBREV STREQUAL TX12MK2 OR PCBREV STREQUAL LR3PRO OR PCBREV STREQUAL COMMANDO8)
set(STORAGE_CONVERSIONS 221)
endif()
endif()
-1
View File
@@ -300,7 +300,6 @@ elseif(PCB STREQUAL X7)
add_definitions(-DRADIO_COMMANDO8)
add_definitions(-DSTICKS_PWM)
add_definitions(-DMUTUALLY_EXCLUSIVE_MODULES)
add_definitions(-DEEPROM_VARIANT=0x4008)
add_definitions(-DMANUFACTURER_IFLIGHT)
elseif(PCBREV STREQUAL ACCESS)
set(DEFAULT_INTERNAL_MODULE ISRM_PXX2 CACHE STRING "Default internal module")
+4 -1
View File
@@ -66,7 +66,7 @@ cd build
declare -a simulator_plugins=(x9lite x9lites
x7 x7-access
t8 t12 tx12 tx12mk2
zorro
zorro commando8
tlite tpro lr3pro
x9d x9dp x9dp2019 x9e
xlite xlites
@@ -155,6 +155,9 @@ do
nv14)
BUILD_OPTIONS+="-DPCB=NV14"
;;
commando8)
BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=COMMANDO8"
;;
esac
rm -f CMakeCache.txt native/CMakeCache.txt