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
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 35 KiB |
@@ -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
|
||||
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
|
||||
@@ -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,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()
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||