Radiomaster T8 (#8219)
|
@ -345,6 +345,8 @@ elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T12)
|
|||
set(FLAVOUR t12)
|
||||
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TX12)
|
||||
set(FLAVOUR tx12)
|
||||
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T8)
|
||||
set(FLAVOUR t8)
|
||||
elseif(PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019)
|
||||
set(FLAVOUR x9d+2019)
|
||||
elseif(PCB STREQUAL X10 AND PCBREV STREQUAL EXPRESS)
|
||||
|
|
|
@ -190,6 +190,18 @@
|
|||
<file>images/simulator/TX12/right-mdl.png</file>
|
||||
<file>images/simulator/TX12/bottom.png</file>
|
||||
<file>images/simulator/TX12/top.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>
|
||||
<file>images/simulator/T8/left-rtn.png</file>
|
||||
<file>images/simulator/T8/left-sys.png</file>
|
||||
<file>images/simulator/T8/right.png</file>
|
||||
<file>images/simulator/T8/right-ent.png</file>
|
||||
<file>images/simulator/T8/right-mdl.png</file>
|
||||
<file>images/simulator/T8/right-up.png</file>
|
||||
<file>images/simulator/T8/right-dn.png</file>
|
||||
<file>images/simulator/T8/bottom.png</file>
|
||||
<file>images/simulator/T8/top.png</file>
|
||||
<file>images/simulator/JumperT16/left.png</file>
|
||||
<file>images/simulator/JumperT16/right.png</file>
|
||||
<file>images/simulator/JumperT16/top.png</file>
|
||||
|
|
|
@ -87,6 +87,8 @@ uint32_t Boards::getFourCC(Type board)
|
|||
return 0x3878746F;
|
||||
case BOARD_RADIOMASTER_TX12:
|
||||
return 0x4178746F;
|
||||
case BOARD_RADIOMASTER_T8:
|
||||
return 0x4378746F;
|
||||
case BOARD_UNKNOWN:
|
||||
break;
|
||||
}
|
||||
|
@ -114,6 +116,7 @@ int Boards::getEEpromSize(Board::Type board)
|
|||
case BOARD_TARANIS_X9E:
|
||||
case BOARD_JUMPER_T12:
|
||||
case BOARD_RADIOMASTER_TX12:
|
||||
case BOARD_RADIOMASTER_T8:
|
||||
return EESIZE_TARANIS;
|
||||
case BOARD_UNKNOWN:
|
||||
return EESIZE_MAX;
|
||||
|
@ -149,6 +152,7 @@ int Boards::getFlashSize(Type board)
|
|||
case BOARD_TARANIS_X9E:
|
||||
case BOARD_JUMPER_T12:
|
||||
case BOARD_RADIOMASTER_TX12:
|
||||
case BOARD_RADIOMASTER_T8:
|
||||
return FSIZE_TARANIS;
|
||||
case BOARD_HORUS_X12S:
|
||||
case BOARD_X10:
|
||||
|
@ -232,6 +236,16 @@ SwitchInfo Boards::getSwitchInfo(Board::Type board, int index)
|
|||
if (index < DIM(switches))
|
||||
return switches[index];
|
||||
}
|
||||
else if (IS_RADIOMASTER_T8(board)) {
|
||||
const Board::SwitchInfo switches[] = {
|
||||
{SWITCH_TOGGLE, "SA"},
|
||||
{SWITCH_3POS, "SB"},
|
||||
{SWITCH_3POS, "SC"},
|
||||
{SWITCH_TOGGLE, "SD"}
|
||||
};
|
||||
if (index < DIM(switches))
|
||||
return switches[index];
|
||||
}
|
||||
else if (IS_JUMPER_T12(board)) {
|
||||
const Board::SwitchInfo switches[] = {
|
||||
{SWITCH_3POS, "SA"},
|
||||
|
@ -568,6 +582,8 @@ QString Boards::getBoardName(Board::Type board)
|
|||
return "Radiomaster TX16S";
|
||||
case BOARD_RADIOMASTER_TX12:
|
||||
return "Radiomaster TX12";
|
||||
case BOARD_RADIOMASTER_T8:
|
||||
return "Radiomaster T8";
|
||||
default:
|
||||
return tr("Unknown");
|
||||
}
|
||||
|
|
|
@ -53,9 +53,10 @@ namespace Board {
|
|||
BOARD_RADIOMASTER_TX16S,
|
||||
BOARD_JUMPER_T18,
|
||||
BOARD_RADIOMASTER_TX12,
|
||||
BOARD_RADIOMASTER_T8,
|
||||
};
|
||||
|
||||
constexpr int BOARD_TYPE_MAX = BOARD_RADIOMASTER_TX12;
|
||||
constexpr int BOARD_TYPE_MAX = BOARD_RADIOMASTER_T8;
|
||||
|
||||
enum PotType
|
||||
{
|
||||
|
@ -224,6 +225,11 @@ inline bool IS_RADIOMASTER_TX12(Board::Type board)
|
|||
return board == Board::BOARD_RADIOMASTER_TX12;
|
||||
}
|
||||
|
||||
inline bool IS_RADIOMASTER_T8(Board::Type board)
|
||||
{
|
||||
return board == Board::BOARD_RADIOMASTER_T8;
|
||||
}
|
||||
|
||||
inline bool IS_FAMILY_T16(Board::Type board)
|
||||
{
|
||||
return board == Board::BOARD_JUMPER_T16 || board == Board::BOARD_RADIOMASTER_TX16S || board == Board::BOARD_JUMPER_T18;
|
||||
|
@ -231,7 +237,7 @@ inline bool IS_FAMILY_T16(Board::Type board)
|
|||
|
||||
inline bool IS_FAMILY_T12(Board::Type board)
|
||||
{
|
||||
return board == Board::BOARD_JUMPER_T12 || board == Board::BOARD_RADIOMASTER_TX12;
|
||||
return board == Board::BOARD_JUMPER_T12 || board == Board::BOARD_RADIOMASTER_TX12 || board == Board::BOARD_RADIOMASTER_T8;
|
||||
}
|
||||
|
||||
inline bool IS_TARANIS_XLITE(Board::Type board)
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#define TARANIS_X9LITES_VARIANT 0x0801
|
||||
#define JUMPER_T12_VARIANT 0x4001
|
||||
#define RADIOMASTER_TX12_VARIANT 0x4002
|
||||
#define RADIOMASTER_T8_VARIANT 0x4004
|
||||
|
||||
class OpenTxGeneralData: public TransformedField {
|
||||
public:
|
||||
|
|
|
@ -68,6 +68,8 @@ const char * OpenTxEepromInterface::getName()
|
|||
return "OpenTX for Radiomaster TX16S";
|
||||
case BOARD_RADIOMASTER_TX12:
|
||||
return "OpenTX for Radiomaster TX12";
|
||||
case BOARD_RADIOMASTER_T8:
|
||||
return "OpenTX for Radiomaster T8";
|
||||
case BOARD_TARANIS_X9D:
|
||||
return "OpenTX for FrSky Taranis X9D";
|
||||
case BOARD_TARANIS_X9DP:
|
||||
|
@ -339,6 +341,9 @@ int OpenTxEepromInterface::save(uint8_t * eeprom, const RadioData & radioData, u
|
|||
else if (IS_RADIOMASTER_TX12(board)) {
|
||||
variant |= RADIOMASTER_TX12_VARIANT;
|
||||
}
|
||||
else if (IS_RADIOMASTER_T8(board)) {
|
||||
variant |= RADIOMASTER_T8_VARIANT;
|
||||
}
|
||||
OpenTxGeneralData generator((GeneralSettings &)radioData.generalSettings, board, version, variant);
|
||||
// generator.dump();
|
||||
QByteArray data;
|
||||
|
@ -685,6 +690,8 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
|||
return JUMPER_T12_VARIANT;
|
||||
else if (IS_RADIOMASTER_TX12(board))
|
||||
return RADIOMASTER_TX12_VARIANT;
|
||||
else if (IS_RADIOMASTER_T8(board))
|
||||
return RADIOMASTER_T8_VARIANT;
|
||||
else
|
||||
return 0;
|
||||
case MavlinkTelemetry:
|
||||
|
@ -954,6 +961,11 @@ bool OpenTxEepromInterface::checkVariant(unsigned int version, unsigned int vari
|
|||
variantError = true;
|
||||
}
|
||||
}
|
||||
else if (IS_RADIOMASTER_T8(board)) {
|
||||
if (variant != RADIOMASTER_T8_VARIANT) {
|
||||
variantError = true;
|
||||
}
|
||||
}
|
||||
else if (IS_TARANIS(board)) {
|
||||
if (variant != 0) {
|
||||
variantError = true;
|
||||
|
@ -1294,6 +1306,17 @@ void registerOpenTxFirmwares()
|
|||
registerOpenTxFirmware(firmware);
|
||||
addOpenTxRfOptions(firmware, FLEX);
|
||||
|
||||
/* Radiomaster T8 board */
|
||||
firmware = new OpenTxFirmware("opentx-t8", QCoreApplication::translate("Firmware", "Radiomaster T8"), BOARD_RADIOMASTER_T8);
|
||||
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);
|
||||
firmware->addOption("bindkey", Firmware::tr("Allow bind using bind key"));
|
||||
|
||||
/* Radiomaster TX16S board */
|
||||
firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16S / SE / Hall / Masterfire"), BOARD_RADIOMASTER_TX16S);
|
||||
addOpenTxFrskyOptions(firmware);
|
||||
|
|
BIN
companion/src/images/simulator/T8/bottom.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
companion/src/images/simulator/T8/left-pagedn.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
companion/src/images/simulator/T8/left-pageup.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
companion/src/images/simulator/T8/left-rtn.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
companion/src/images/simulator/T8/left-sys.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
companion/src/images/simulator/T8/left.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
companion/src/images/simulator/T8/right-dn.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
companion/src/images/simulator/T8/right-ent.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
companion/src/images/simulator/T8/right-mdl.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
companion/src/images/simulator/T8/right-up.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
companion/src/images/simulator/T8/right.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
companion/src/images/simulator/T8/top.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
|
@ -16,6 +16,7 @@ set(simulation_SRCS
|
|||
simulateduiwidgetJumperT16.cpp
|
||||
simulateduiwidgetJumperT18.cpp
|
||||
simulateduiwidgetTX12.cpp
|
||||
simulateduiwidgetT8.cpp
|
||||
simulateduiwidgetTX16S.cpp
|
||||
simulatorinterface.cpp
|
||||
simulatormainwindow.cpp
|
||||
|
@ -43,6 +44,7 @@ set(simulation_UIS
|
|||
simulateduiwidgetJumperT16.ui
|
||||
simulateduiwidgetJumperT18.ui
|
||||
simulateduiwidgetTX12.ui
|
||||
simulateduiwidgetT8.ui
|
||||
simulateduiwidgetTX16S.ui
|
||||
simulatormainwindow.ui
|
||||
simulatorstartupdialog.ui
|
||||
|
|
|
@ -116,6 +116,7 @@ namespace Ui {
|
|||
class SimulatedUIWidgetJumperT18;
|
||||
class SimulatedUIWidgetTX16S;
|
||||
class SimulatedUIWidgetTX12;
|
||||
class SimulatedUIWidgetT8;
|
||||
}
|
||||
|
||||
class SimulatedUIWidget9X: public SimulatedUIWidget
|
||||
|
@ -278,6 +279,17 @@ class SimulatedUIWidgetTX12: public SimulatedUIWidget
|
|||
Ui::SimulatedUIWidgetTX12 * ui;
|
||||
};
|
||||
|
||||
class SimulatedUIWidgetT8: public SimulatedUIWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SimulatedUIWidgetT8(SimulatorInterface * simulator, QWidget * parent = nullptr);
|
||||
virtual ~SimulatedUIWidgetT8();
|
||||
|
||||
private:
|
||||
Ui::SimulatedUIWidgetT8 * ui;
|
||||
};
|
||||
|
||||
class SimulatedUIWidgetTX16S: public SimulatedUIWidget
|
||||
{
|
||||
|
|
67
companion/src/simulation/simulateduiwidgetT8.cpp
Normal file
|
@ -0,0 +1,67 @@
|
|||
#include "simulateduiwidget.h"
|
||||
#include "ui_simulateduiwidgetT8.h"
|
||||
|
||||
// NOTE: RadioUiAction(NUMBER,...): NUMBER relates to enum EnumKeys in the specific board.h
|
||||
|
||||
SimulatedUIWidgetT8::SimulatedUIWidgetT8(SimulatorInterface *simulator, QWidget * parent):
|
||||
SimulatedUIWidget(simulator, parent),
|
||||
ui(new Ui::SimulatedUIWidgetT8)
|
||||
{
|
||||
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->rightbuttons->addArea(QRect(25, 40, 35, 20), "T8/right-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->rightbuttons->addArea(QRect(25, 90, 35, 20), "T8/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->rightbuttons->addArea(QRect(25, 135, 35, 20), "T8/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->rightbuttons->addArea(QRect(25, 180, 35, 20), "T8/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->leftbuttons->addArea(QRect(60, 45, 35, 20), "T8/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->leftbuttons->addArea(QRect(60, 85, 35, 20), "T8/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->leftbuttons->addArea(QRect(60, 135, 35, 20), "T8/left-pagedn.png", act));
|
||||
|
||||
act = new RadioUiAction(2, QList<int>() << Qt::Key_PageUp, SIMU_STR_HLP_KEY_PGUP, SIMU_STR_HLP_ACT_PGUP);
|
||||
addRadioWidget(ui->leftbuttons->addArea(QRect(60, 180, 35, 20), "T8/left-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);
|
||||
}
|
||||
|
||||
SimulatedUIWidgetT8::~SimulatedUIWidgetT8()
|
||||
{
|
||||
delete ui;
|
||||
}
|
258
companion/src/simulation/simulateduiwidgetT8.ui
Normal file
|
@ -0,0 +1,258 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SimulatedUIWidgetT8</class>
|
||||
<widget class="QWidget" name="SimulatedUIWidgetT8">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>480</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>480</width>
|
||||
<height>300</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>480</width>
|
||||
<height>300</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">Radiomaster T8 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>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="1" column="0" rowspan="3">
|
||||
<widget class="ButtonsWidget" name="leftbuttons" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>113</width>
|
||||
<height>280</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>113</width>
|
||||
<height>280</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background:url(:/images/simulator/T8/left.png);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="LcdWidget" name="lcd" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>254</width>
|
||||
<height>158</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>254</width>
|
||||
<height>158</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgb(215, 243, 255);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2" rowspan="3">
|
||||
<widget class="ButtonsWidget" name="rightbuttons" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>113</width>
|
||||
<height>280</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>113</width>
|
||||
<height>280</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background:url(:/images/simulator/T8/right.png)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QWidget" name="top" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>254</width>
|
||||
<height>35</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>254</width>
|
||||
<height>35</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background:url(:/images/simulator/T8/top.png)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QWidget" name="bottom" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>254</width>
|
||||
<height>113</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>254</width>
|
||||
<height>113</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background:url(:/images/simulator/T8/bottom.png)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="3">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>12</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="baseSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>12</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgb(255, 255, 255);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="3">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgb(247, 245, 245);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</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/>
|
||||
<connections/>
|
||||
</ui>
|
|
@ -100,6 +100,9 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato
|
|||
case Board::BOARD_RADIOMASTER_TX12:
|
||||
radioUiWidget = new SimulatedUIWidgetTX12(simulator, this);
|
||||
break;
|
||||
case Board::BOARD_RADIOMASTER_T8:
|
||||
radioUiWidget = new SimulatedUIWidgetT8(simulator, this);
|
||||
break;
|
||||
case Board::BOARD_RADIOMASTER_TX16S:
|
||||
radioUiWidget = new SimulatedUIWidgetTX16S(simulator, this);
|
||||
break;
|
||||
|
|
|
@ -345,6 +345,10 @@ if(RADIOMASTER_RELEASE)
|
|||
add_definitions(-DRADIOMASTER_RELEASE)
|
||||
endif()
|
||||
|
||||
if(RADIOMASTER_RTF_RELEASE)
|
||||
add_definitions(-DRADIOMASTER_RTF_RELEASE)
|
||||
endif()
|
||||
|
||||
if(TBS_RELEASE)
|
||||
add_definitions(-DTBS_RELEASE)
|
||||
endif()
|
||||
|
|
|
@ -208,7 +208,11 @@ enum TrainerMode {
|
|||
};
|
||||
#endif
|
||||
|
||||
#if defined(RADIO_T16) && !defined(INTERNAL_MODULE_MULTI)
|
||||
#define TRAINER_MODE_MIN() TRAINER_MODE_MASTER_TRAINER_JACK
|
||||
|
||||
#if !defined(HARDWARE_EXTERNAL_MODULE)
|
||||
#define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE
|
||||
#elif defined(RADIO_T16) && !defined(INTERNAL_MODULE_MULTI)
|
||||
#if defined(BLUETOOTH)
|
||||
#define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE_BLUETOOTH
|
||||
#else
|
||||
|
|
|
@ -181,8 +181,9 @@ uint8_t * lcdLoadBitmap(uint8_t * dest, const char * filename, uint8_t width, ui
|
|||
#if defined(BOOT)
|
||||
#define BLINK_ON_PHASE (0)
|
||||
#else
|
||||
#define BLINK_ON_PHASE (g_blinkTmr10ms & (1<<6))
|
||||
#define SLOW_BLINK_ON_PHASE (g_blinkTmr10ms & (1<<7))
|
||||
#define BLINK_ON_PHASE (g_blinkTmr10ms & (1<<6))
|
||||
#define FAST_BLINK_ON_PHASE (g_blinkTmr10ms & (1<<4))
|
||||
#endif
|
||||
|
||||
inline display_t getPixel(uint8_t x, uint8_t y)
|
||||
|
|
|
@ -165,7 +165,7 @@ void menuModelCurveOne(event_t event)
|
|||
}
|
||||
break;
|
||||
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_MDL)
|
||||
case EVT_KEY_FIRST(KEY_MODEL):
|
||||
pushMenu(menuChannelsView);
|
||||
killEvents(event);
|
||||
|
|
|
@ -49,7 +49,7 @@ enum ExposFields {
|
|||
|
||||
void menuModelExpoOne(event_t event)
|
||||
{
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_MDL)
|
||||
if (event == EVT_KEY_FIRST(KEY_MODEL)) {
|
||||
pushMenu(menuChannelsView);
|
||||
killEvents(event);
|
||||
|
|
|
@ -85,7 +85,7 @@ void drawOffsetBar(uint8_t x, uint8_t y, MixData * md)
|
|||
|
||||
void menuModelMixOne(event_t event)
|
||||
{
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_MDL)
|
||||
if (event == EVT_KEY_FIRST(KEY_MODEL)) {
|
||||
pushMenu(menuChannelsView);
|
||||
killEvents(event);
|
||||
|
|
|
@ -203,7 +203,7 @@ void menuModelSelect(event_t event)
|
|||
}
|
||||
break;
|
||||
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_PAGEDN)
|
||||
case EVT_KEY_FIRST(KEY_PAGEUP):
|
||||
chainMenu(menuTabModel[DIM(menuTabModel)-1]);
|
||||
killEvents(event);
|
||||
|
@ -212,7 +212,7 @@ void menuModelSelect(event_t event)
|
|||
case EVT_KEY_FIRST(KEY_PAGEDN):
|
||||
chainMenu(menuModelSetup);
|
||||
break;
|
||||
#elif defined(NAVIGATION_X7)
|
||||
#elif defined(KEYS_GPIO_REG_PAGE)
|
||||
case EVT_KEY_LONG(KEY_PAGE):
|
||||
chainMenu(menuTabModel[DIM(menuTabModel)-1]);
|
||||
killEvents(event);
|
||||
|
@ -244,7 +244,7 @@ void menuModelSelect(event_t event)
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(NAVIGATION_X7)
|
||||
#if defined(ROTARY_ENCODER) && defined(NAVIGATION_X7)
|
||||
case EVT_ROTARY_LEFT:
|
||||
case EVT_ROTARY_RIGHT:
|
||||
#endif
|
||||
|
|
|
@ -111,7 +111,7 @@ enum MenuModelSetupItems {
|
|||
ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_2,
|
||||
ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_3,
|
||||
#endif
|
||||
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL,
|
||||
ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE,
|
||||
#if defined(MULTIMODULE)
|
||||
|
@ -156,6 +156,7 @@ enum MenuModelSetupItems {
|
|||
ITEM_MODEL_SETUP_EXTRA_MODULE_CHANNELS,
|
||||
ITEM_MODEL_SETUP_EXTRA_MODULE_BIND,
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
ITEM_MODEL_SETUP_TRAINER_LABEL,
|
||||
|
@ -183,11 +184,14 @@ enum MenuModelSetupItems {
|
|||
#define REGISTRATION_ID_ROWS
|
||||
#endif
|
||||
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
#if defined(HARDWARE_INTERNAL_MODULE) && defined(HARDWARE_EXTERNAL_MODULE)
|
||||
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE)
|
||||
#define CURRENT_RECEIVER_EDITED(k) (k - (k >= ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL ? ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_1 : ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_1))
|
||||
#elif defined(PCBSKY9X)
|
||||
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_SETUP_EXTRA_MODULE_LABEL ? EXTRA_MODULE : EXTERNAL_MODULE)
|
||||
#elif defined(HARDWARE_INTERNAL_MODULE)
|
||||
#define CURRENT_MODULE_EDITED(k) (INTERNAL_MODULE)
|
||||
#define CURRENT_RECEIVER_EDITED(k) (k - ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_RECEIVER_1)
|
||||
#else
|
||||
#define CURRENT_MODULE_EDITED(k) (EXTERNAL_MODULE)
|
||||
#define CURRENT_RECEIVER_EDITED(k) (k - ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_1)
|
||||
|
@ -335,6 +339,32 @@ void onBluetoothConnectMenu(const char * result)
|
|||
#define INTERNAL_MODULE_ROWS
|
||||
#endif
|
||||
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
#define EXTERNAL_MODULE_ROWS \
|
||||
LABEL(ExternalModule), \
|
||||
MODULE_TYPE_ROWS(EXTERNAL_MODULE), \
|
||||
MULTIMODULE_TYPE_ROWS(EXTERNAL_MODULE) /* PROTOCOL */ \
|
||||
MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) /* SUBTYPE */ \
|
||||
MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) \
|
||||
AFHDS3_PROTOCOL_ROW(EXTERNAL_MODULE) \
|
||||
AFHDS3_MODE_ROWS(EXTERNAL_MODULE) \
|
||||
MODULE_CHANNELS_ROWS(EXTERNAL_MODULE), \
|
||||
IF_NOT_ACCESS_MODULE_RF(EXTERNAL_MODULE, MODULE_BIND_ROWS(EXTERNAL_MODULE)), /* line reused for PPM: PPM settings */ \
|
||||
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), /* RxNum */ \
|
||||
AFHDS3_MODULE_ROWS(EXTERNAL_MODULE) \
|
||||
MODULE_POWER_ROW(EXTERNAL_MODULE), \
|
||||
IF_NOT_PXX2_MODULE(EXTERNAL_MODULE, MODULE_OPTION_ROW(EXTERNAL_MODULE)), \
|
||||
MULTIMODULE_MODULE_ROWS(EXTERNAL_MODULE) \
|
||||
FAILSAFE_ROWS(EXTERNAL_MODULE), /* ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE */ \
|
||||
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 1), /* Range check and Register buttons */ \
|
||||
IF_PXX2_MODULE(EXTERNAL_MODULE, 0), /* Module options */ \
|
||||
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), /* Receiver 1 */ \
|
||||
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), /* Receiver 2 */ \
|
||||
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), /* Receiver 3 */
|
||||
#else
|
||||
#define EXTERNAL_MODULE_ROWS
|
||||
#endif
|
||||
|
||||
void menuModelSetup(event_t event)
|
||||
{
|
||||
int8_t old_editMode = s_editMode;
|
||||
|
@ -370,26 +400,7 @@ void menuModelSetup(event_t event)
|
|||
|
||||
INTERNAL_MODULE_ROWS
|
||||
|
||||
LABEL(ExternalModule),
|
||||
MODULE_TYPE_ROWS(EXTERNAL_MODULE),
|
||||
MULTIMODULE_TYPE_ROWS(EXTERNAL_MODULE) // PROTOCOL
|
||||
MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) // SUBTYPE
|
||||
MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE)
|
||||
AFHDS3_PROTOCOL_ROW(EXTERNAL_MODULE)
|
||||
AFHDS3_MODE_ROWS(EXTERNAL_MODULE)
|
||||
MODULE_CHANNELS_ROWS(EXTERNAL_MODULE),
|
||||
IF_NOT_ACCESS_MODULE_RF(EXTERNAL_MODULE, MODULE_BIND_ROWS(EXTERNAL_MODULE)), // line reused for PPM: PPM settings
|
||||
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), // RxNum
|
||||
AFHDS3_MODULE_ROWS(EXTERNAL_MODULE)
|
||||
MODULE_POWER_ROW(EXTERNAL_MODULE),
|
||||
IF_NOT_PXX2_MODULE(EXTERNAL_MODULE, MODULE_OPTION_ROW(EXTERNAL_MODULE)),
|
||||
MULTIMODULE_MODULE_ROWS(EXTERNAL_MODULE)
|
||||
FAILSAFE_ROWS(EXTERNAL_MODULE), //ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE
|
||||
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 1), // Range check and Register buttons
|
||||
IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // Module options
|
||||
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), // Receiver 1
|
||||
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), // Receiver 2
|
||||
IF_ACCESS_MODULE_RF(EXTERNAL_MODULE, 0), // Receiver 3
|
||||
EXTERNAL_MODULE_ROWS
|
||||
|
||||
TRAINER_ROWS
|
||||
});
|
||||
|
@ -912,14 +923,18 @@ void menuModelSetup(event_t event)
|
|||
break;
|
||||
#endif
|
||||
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL:
|
||||
lcdDrawTextAlignedLeft(y, STR_EXTERNALRF);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(INTERNAL_MODULE_MULTI)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE:
|
||||
#endif
|
||||
lcdDrawTextAlignedLeft(y, INDENT TR_MODE);
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_EXTERNAL_MODULE_PROTOCOLS, moduleIdx == EXTERNAL_MODULE ? reusableBuffer.moduleSetup.newType : g_model.moduleData[moduleIdx].type, menuHorizontalPosition==0 ? attr : 0);
|
||||
if (isModuleXJT(moduleIdx))
|
||||
|
@ -1013,7 +1028,9 @@ void menuModelSetup(event_t event)
|
|||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL:
|
||||
#endif
|
||||
{
|
||||
lcdDrawTextAlignedLeft(y, TR_TYPE);
|
||||
int multi_rfProto = g_model.moduleData[moduleIdx].getMultiProtocol();
|
||||
|
@ -1052,7 +1069,9 @@ void menuModelSetup(event_t event)
|
|||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_SUBTYPE:
|
||||
#endif
|
||||
{
|
||||
lcdDrawTextAlignedLeft(y, STR_SUBTYPE);
|
||||
lcdDrawMultiSubProtocolString(MODEL_SETUP_2ND_COLUMN, y, moduleIdx, g_model.moduleData[moduleIdx].subType, attr);
|
||||
|
@ -1095,7 +1114,7 @@ void menuModelSetup(event_t event)
|
|||
lcdDrawTextAlignedLeft(y, INDENT TR_MODE);
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_VTRAINERMODES, g_model.trainerData.mode, attr);
|
||||
if (attr) {
|
||||
g_model.trainerData.mode = checkIncDec(event, g_model.trainerData.mode, 0, TRAINER_MODE_MAX(), EE_MODEL, isTrainerModeAvailable);
|
||||
g_model.trainerData.mode = checkIncDec(event, g_model.trainerData.mode, TRAINER_MODE_MIN(), TRAINER_MODE_MAX(), EE_MODEL, isTrainerModeAvailable);
|
||||
#if defined(BLUETOOTH)
|
||||
if (checkIncDec_Ret) {
|
||||
bluetooth.state = BLUETOOTH_STATE_OFF;
|
||||
|
@ -1182,7 +1201,9 @@ void menuModelSetup(event_t event)
|
|||
#if defined(PCBSKY9X)
|
||||
case ITEM_MODEL_SETUP_EXTRA_MODULE_CHANNELS:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_CHANNELS:
|
||||
#endif
|
||||
{
|
||||
ModuleData & moduleData = g_model.moduleData[moduleIdx];
|
||||
lcdDrawTextAlignedLeft(y, STR_CHANNELRANGE);
|
||||
|
@ -1308,7 +1329,9 @@ void menuModelSetup(event_t event)
|
|||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_NOT_ACCESS_RXNUM_BIND_RANGE:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_NOT_ACCESS_RXNUM_BIND_RANGE:
|
||||
#endif
|
||||
{
|
||||
ModuleData & moduleData = g_model.moduleData[moduleIdx];
|
||||
if (isModulePPM(moduleIdx)) {
|
||||
|
@ -1462,7 +1485,9 @@ void menuModelSetup(event_t event)
|
|||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_FAILSAFE:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE:
|
||||
#endif
|
||||
{
|
||||
ModuleData &moduleData = g_model.moduleData[moduleIdx];
|
||||
lcdDrawTextAlignedLeft(y, STR_FAILSAFE);
|
||||
|
@ -1523,7 +1548,9 @@ void menuModelSetup(event_t event)
|
|||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_OPTIONS:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_OPTIONS:
|
||||
#endif
|
||||
{
|
||||
#if defined(MULTIMODULE)
|
||||
if (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx)) {
|
||||
|
@ -1602,7 +1629,9 @@ void menuModelSetup(event_t event)
|
|||
#if defined(INTERNAL_MODULE_MULTI)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_POWER:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_POWER:
|
||||
#endif
|
||||
{
|
||||
auto & module = g_model.moduleData[moduleIdx];
|
||||
// Lite FCC / Lite FLEX / Lite Pro Flex
|
||||
|
@ -1687,7 +1716,9 @@ void menuModelSetup(event_t event)
|
|||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_AUTOBIND:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_AUTOBIND:
|
||||
#endif
|
||||
if (g_model.moduleData[moduleIdx].getMultiProtocol() == MODULE_SUBTYPE_MULTI_DSM2) {
|
||||
int8_t value = (g_model.moduleData[moduleIdx].multi.optionValue & 0x02) >> 1;
|
||||
lcdDrawText(INDENT_WIDTH, y, STR_MULTI_SERVOFREQ);
|
||||
|
@ -1708,13 +1739,17 @@ void menuModelSetup(event_t event)
|
|||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_DISABLE_TELEM:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_DISABLE_TELEM:
|
||||
#endif
|
||||
g_model.moduleData[moduleIdx].multi.disableTelemetry = editCheckBox(g_model.moduleData[moduleIdx].multi.disableTelemetry, MODEL_SETUP_2ND_COLUMN, y, INDENT TR_DISABLE_TELEM, attr, event);
|
||||
break;
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_DISABLE_MAPPING:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_DISABLE_MAPPING:
|
||||
#endif
|
||||
g_model.moduleData[moduleIdx].multi.disableMapping = editCheckBox(g_model.moduleData[moduleIdx].multi.disableMapping, MODEL_SETUP_2ND_COLUMN, y, INDENT TR_DISABLE_CH_MAP, attr, event);
|
||||
break;
|
||||
#endif
|
||||
|
@ -1739,7 +1774,10 @@ void menuModelSetup(event_t event)
|
|||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_STATUS:
|
||||
#endif
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_STATUS: {
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_STATUS:
|
||||
#endif
|
||||
{
|
||||
lcdDrawTextAlignedLeft(y, STR_MODULE_STATUS);
|
||||
|
||||
char statusText[64];
|
||||
|
@ -1750,7 +1788,10 @@ void menuModelSetup(event_t event)
|
|||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_SYNCSTATUS:
|
||||
#endif
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_SYNCSTATUS: {
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_SYNCSTATUS:
|
||||
#endif
|
||||
{
|
||||
lcdDrawTextAlignedLeft(y, STR_MODULE_SYNC);
|
||||
char statusText[64];
|
||||
getModuleSyncStatusString(moduleIdx, statusText);
|
||||
|
@ -1848,11 +1889,13 @@ void menuModelSetup(event_t event)
|
|||
checkModelIdUnique(g_eeGeneral.currModel, EXTRA_MODULE);
|
||||
break;
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_NOT_ACCESS_RXNUM_BIND_RANGE:
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_MODEL_NUM:
|
||||
if (menuHorizontalPosition == 0)
|
||||
checkModelIdUnique(g_eeGeneral.currModel, EXTERNAL_MODULE);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,12 @@ void menuRadioDiagKeys(event_t event)
|
|||
displayKeyState(i&1? 20*FW : 18*FW, y, TRM_BASE+i);
|
||||
}
|
||||
|
||||
if (i <= KEY_MAX) {
|
||||
if (i == 7) {
|
||||
y = MENU_HEADER_HEIGHT + 1 + FH * 6;
|
||||
lcdDrawTextAtIndex(8, y, STR_VKEYS, i, 0);
|
||||
displayKeyState(lcdNextPos + 10, y, i);
|
||||
}
|
||||
else if (i <= KEY_MAX) {
|
||||
y = MENU_HEADER_HEIGHT + 1 + FH * i;
|
||||
lcdDrawTextAtIndex(0, y, STR_VKEYS, i, 0);
|
||||
displayKeyState(5 * FW + 2, y, i);
|
||||
|
|
|
@ -79,13 +79,13 @@ enum {
|
|||
ITEM_RADIO_SETUP_MEMORY_WARNING,
|
||||
ITEM_RADIO_SETUP_ALARM_WARNING,
|
||||
ITEM_RADIO_SETUP_RSSI_POWEROFF_ALARM,
|
||||
ITEM_RADIO_SETUP_BACKLIGHT_LABEL,
|
||||
ITEM_RADIO_SETUP_BACKLIGHT_MODE,
|
||||
ITEM_RADIO_SETUP_BACKLIGHT_DELAY,
|
||||
ITEM_RADIO_SETUP_BRIGHTNESS,
|
||||
CASE_BACKLIGHT(ITEM_RADIO_SETUP_BACKLIGHT_LABEL)
|
||||
CASE_BACKLIGHT(ITEM_RADIO_SETUP_BACKLIGHT_MODE)
|
||||
CASE_BACKLIGHT(ITEM_RADIO_SETUP_BACKLIGHT_DELAY)
|
||||
CASE_BACKLIGHT(ITEM_RADIO_SETUP_BRIGHTNESS)
|
||||
CASE_PWM_BACKLIGHT(ITEM_RADIO_SETUP_BACKLIGHT_BRIGHTNESS_OFF)
|
||||
CASE_PWM_BACKLIGHT(ITEM_RADIO_SETUP_BACKLIGHT_BRIGHTNESS_ON)
|
||||
ITEM_RADIO_SETUP_FLASH_BEEP,
|
||||
CASE_BACKLIGHT(ITEM_RADIO_SETUP_FLASH_BEEP)
|
||||
CASE_SPLASH_PARAM(ITEM_RADIO_SETUP_DISABLE_SPLASH)
|
||||
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_ON_SPEED)
|
||||
CASE_PWR_BUTTON_PRESS(ITEM_RADIO_SETUP_PWR_OFF_SPEED)
|
||||
|
@ -152,10 +152,14 @@ void menuRadioSetup(event_t event)
|
|||
CASE_GYRO(0)
|
||||
CASE_GYRO(0)
|
||||
0, LABEL(ALARMS), 0, CASE_CAPACITY(0)
|
||||
0, 0, 0, 0,
|
||||
LABEL(BACKLIGHT), 0, 0, 0, CASE_PWM_BACKLIGHT(0)
|
||||
0, 0, 0, 0, /* ITEM_RADIO_SETUP_INACTIVITY_ALARM ITEM_RADIO_SETUP_MEMORY_WARNING ITEM_RADIO_SETUP_ALARM_WARNING ITEM_RADIO_SETUP_RSSI_POWEROFF_ALARM */
|
||||
CASE_BACKLIGHT(LABEL(BACKLIGHT))
|
||||
CASE_BACKLIGHT(0)
|
||||
CASE_BACKLIGHT(0)
|
||||
CASE_BACKLIGHT(0)
|
||||
CASE_PWM_BACKLIGHT(0)
|
||||
0,
|
||||
CASE_PWM_BACKLIGHT(0)
|
||||
CASE_BACKLIGHT(0)
|
||||
CASE_SPLASH_PARAM(0)
|
||||
CASE_PWR_BUTTON_PRESS(0)
|
||||
CASE_PWR_BUTTON_PRESS(0)
|
||||
|
@ -251,7 +255,7 @@ void menuRadioSetup(event_t event)
|
|||
putsVolts(lcdLastRightPos+FW, y, 120+g_eeGeneral.vBatMax, (menuHorizontalPosition>0 ? attr : 0)|LEFT|NO_UNIT);
|
||||
if (attr && s_editMode>0) {
|
||||
if (menuHorizontalPosition==0)
|
||||
CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatMin, -50, g_eeGeneral.vBatMax+29); // min=4.0V
|
||||
CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatMin, -60, g_eeGeneral.vBatMax+29); // min=3.0V
|
||||
else
|
||||
CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatMax, g_eeGeneral.vBatMin-29, +40); // max=16.0V
|
||||
}
|
||||
|
@ -411,7 +415,7 @@ void menuRadioSetup(event_t event)
|
|||
case ITEM_RADIO_SETUP_BATTERY_WARNING:
|
||||
lcdDrawTextAlignedLeft(y, STR_BATTERYWARNING);
|
||||
putsVolts(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.vBatWarn, attr|LEFT);
|
||||
if(attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatWarn, 40, 120); //4-12V
|
||||
if(attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.vBatWarn, 30, 120); //3-12V
|
||||
break;
|
||||
|
||||
case ITEM_RADIO_SETUP_MEMORY_WARNING:
|
||||
|
@ -450,6 +454,7 @@ void menuRadioSetup(event_t event)
|
|||
if(attr) g_eeGeneral.inactivityTimer = checkIncDec(event, g_eeGeneral.inactivityTimer, 0, 250, EE_GENERAL); //0..250minutes
|
||||
break;
|
||||
|
||||
#if defined(BACKLIGHT_GPIO)
|
||||
case ITEM_RADIO_SETUP_BACKLIGHT_LABEL:
|
||||
lcdDrawTextAlignedLeft(y, STR_BACKLIGHT_LABEL);
|
||||
break;
|
||||
|
@ -478,6 +483,7 @@ void menuRadioSetup(event_t event)
|
|||
g_eeGeneral.backlightBright = 100 - b;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(PWM_BACKLIGHT)
|
||||
case ITEM_RADIO_SETUP_BACKLIGHT_BRIGHTNESS_OFF:
|
||||
|
|
|
@ -42,7 +42,7 @@ enum AboutScreens {
|
|||
#define ABOUT_X 2
|
||||
#define ABOUT_INDENT 4
|
||||
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_PAGEDN)
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
|
||||
#elif defined(NAVIGATION_X7)
|
||||
|
|
|
@ -26,7 +26,12 @@ constexpr coord_t CHANNEL_GAUGE_OFFSET = CHANNEL_VALUE_OFFSET;
|
|||
constexpr coord_t CHANNEL_BAR_WIDTH = 70;
|
||||
constexpr coord_t CHANNEL_PROPERTIES_OFFSET = CHANNEL_GAUGE_OFFSET + CHANNEL_BAR_WIDTH + 2;
|
||||
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(RADIO_T8)
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
|
||||
#define EVT_KEY_NEXT_PAGE EVT_KEY_BREAK(KEY_PLUS)
|
||||
#define EVT_KEY_PREVIOUS_PAGE EVT_KEY_BREAK(KEY_MINUS)
|
||||
#elif defined(NAVIGATION_X7_TX12)
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
|
||||
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
|
||||
|
|
|
@ -93,8 +93,9 @@ void doMainScreenGraphics()
|
|||
if (g_model.throttleReversed && CONVERT_MODE(2) == THR_STICK)
|
||||
calibStickVert = -calibStickVert;
|
||||
drawStick(RBOX_CENTERX, calibratedAnalogs[CONVERT_MODE(3)], calibStickVert);
|
||||
|
||||
#if defined(HARDWARE_POT1)
|
||||
drawPotsBars();
|
||||
#endif
|
||||
}
|
||||
|
||||
void displayTrims(uint8_t phase)
|
||||
|
@ -213,7 +214,16 @@ void displayVoltageOrAlarm()
|
|||
#define displayVoltageOrAlarm() displayBattVoltage()
|
||||
#endif
|
||||
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(RADIO_T8)
|
||||
#define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER)
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_FIRST(KEY_PAGEDN)
|
||||
#define EVT_KEY_NEXT_PAGE EVT_KEY_FIRST(KEY_PLUS)
|
||||
#define EVT_KEY_PREVIOUS_PAGE EVT_KEY_FIRST(KEY_MINUS)
|
||||
#define EVT_KEY_MODEL_MENU EVT_KEY_LONG(KEY_MODEL)
|
||||
#define EVT_KEY_GENERAL_MENU EVT_KEY_LONG(KEY_SYS)
|
||||
#define EVT_KEY_TELEMETRY EVT_KEY_LONG(KEY_PAGEUP)
|
||||
#elif defined(NAVIGATION_X7_TX12)
|
||||
#define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER)
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_FIRST(KEY_PAGEUP)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_FIRST(KEY_PAGEDN)
|
||||
|
@ -410,6 +420,7 @@ void menuMainView(event_t event)
|
|||
killEvents(event);
|
||||
break;
|
||||
|
||||
|
||||
case EVT_KEY_FIRST(KEY_EXIT):
|
||||
#if defined(GVARS)
|
||||
if (gvarDisplayTimer > 0) {
|
||||
|
|
|
@ -31,7 +31,7 @@ void menuStatisticsView(event_t event)
|
|||
|
||||
switch (event) {
|
||||
case EVT_KEY_FIRST(KEY_UP):
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_PAGEDN)
|
||||
case EVT_KEY_BREAK(KEY_PAGEDN):
|
||||
#elif defined(NAVIGATION_X7)
|
||||
case EVT_KEY_BREAK(KEY_PAGE):
|
||||
|
@ -41,7 +41,7 @@ void menuStatisticsView(event_t event)
|
|||
break;
|
||||
|
||||
case EVT_KEY_FIRST(KEY_DOWN):
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_PAGEUP)
|
||||
case EVT_KEY_BREAK(KEY_PAGEUP):
|
||||
killEvents(event);
|
||||
chainMenu(menuStatisticsDebug2);
|
||||
|
@ -140,7 +140,7 @@ void menuStatisticsDebug(event_t event)
|
|||
break;
|
||||
|
||||
case EVT_KEY_FIRST(KEY_UP):
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_PAGEDN)
|
||||
case EVT_KEY_BREAK(KEY_PAGEDN):
|
||||
disableVBatBridge();
|
||||
chainMenu(menuStatisticsDebug2);
|
||||
|
@ -153,7 +153,7 @@ void menuStatisticsDebug(event_t event)
|
|||
#endif
|
||||
|
||||
case EVT_KEY_FIRST(KEY_DOWN):
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_PAGEUP)
|
||||
case EVT_KEY_BREAK(KEY_PAGEUP):
|
||||
#elif defined(NAVIGATION_X7)
|
||||
case EVT_KEY_LONG(KEY_PAGE):
|
||||
|
@ -278,7 +278,7 @@ void menuStatisticsDebug2(event_t event)
|
|||
break;
|
||||
|
||||
case EVT_KEY_FIRST(KEY_UP):
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_PAGEDN)
|
||||
case EVT_KEY_BREAK(KEY_PAGEDN):
|
||||
#elif defined(NAVIGATION_X7)
|
||||
case EVT_KEY_BREAK(KEY_PAGE):
|
||||
|
@ -287,7 +287,7 @@ void menuStatisticsDebug2(event_t event)
|
|||
return;
|
||||
|
||||
case EVT_KEY_FIRST(KEY_DOWN):
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_PAGEUP)
|
||||
case EVT_KEY_BREAK(KEY_PAGEUP):
|
||||
#elif defined(NAVIGATION_X7)
|
||||
case EVT_KEY_LONG(KEY_PAGE):
|
||||
|
|
|
@ -195,7 +195,9 @@ enum {
|
|||
ITEM_RADIO_HARDWARE_MAX
|
||||
};
|
||||
|
||||
#if (NUM_POTS + NUM_SLIDERS) == 1
|
||||
#if (NUM_POTS + NUM_SLIDERS) == 0
|
||||
#define POTS_ROWS HIDDEN_ROW
|
||||
#elif (NUM_POTS + NUM_SLIDERS) == 1
|
||||
#define POTS_ROWS NAVIGATION_LINE_BY_LINE|1
|
||||
#elif (NUM_POTS + NUM_SLIDERS) == 2
|
||||
#define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1
|
||||
|
@ -262,7 +264,7 @@ void onHardwareAntennaSwitchConfirm(const char * result)
|
|||
#define SWITCH_TYPE_MAX(sw) (SWITCH_3POS)
|
||||
#elif defined(PCBX9E)
|
||||
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS)
|
||||
#elif defined(RADIO_TX12)
|
||||
#elif defined(RADIO_TX12) || defined(RADIO_T8)
|
||||
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SA - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SD - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS)
|
||||
#else
|
||||
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH - MIXSRC_FIRST_SWITCH <= sw) ? SWITCH_2POS : SWITCH_3POS)
|
||||
|
@ -330,27 +332,19 @@ void menuRadioHardware(event_t event)
|
|||
POTS_ROWS,
|
||||
LABEL(Switches),
|
||||
SWITCHES_ROWS,
|
||||
|
||||
0 /* battery calib */,
|
||||
RTC_ROW
|
||||
TX_CAPACITY_MEASUREMENT_ROWS
|
||||
|
||||
MAX_BAUD_ROWS
|
||||
|
||||
BLUETOOTH_ROWS
|
||||
|
||||
EXTERNAL_ANTENNA_ROW
|
||||
|
||||
AUX_SERIAL_ROWS
|
||||
|
||||
0 /* ADC filter */,
|
||||
READONLY_ROW /* RAS */,
|
||||
SPORT_POWER_ROWS
|
||||
1 /* debugs */,
|
||||
|
||||
0,
|
||||
|
||||
0
|
||||
0 /* EEPROM backup */,
|
||||
0 /* Factory reset */
|
||||
});
|
||||
|
||||
uint8_t sub = menuVerticalPosition - HEADER_LINE;
|
||||
|
|
|
@ -34,7 +34,7 @@ enum NavigationDirection {
|
|||
#if defined(NAVIGATION_XLITE)
|
||||
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_LEFT) && IS_SHIFT_PRESSED())
|
||||
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_LONG(KEY_RIGHT) && IS_SHIFT_PRESSED())
|
||||
#elif defined(NAVIGATION_X7_TX12)
|
||||
#elif defined(KEYS_GPIO_REG_PAGEDN)
|
||||
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_PAGEUP))
|
||||
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_PAGEDN))
|
||||
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
|
||||
|
|
|
@ -56,8 +56,11 @@ void onSwitchLongEnterPress(const char * result)
|
|||
int checkIncDec(event_t event, int val, int i_min, int i_max, unsigned int i_flags, IsValueAvailable isValueAvailable, const CheckIncDecStops &stops)
|
||||
{
|
||||
int newval = val;
|
||||
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
if (s_editMode>0 && event==EVT_ROTARY_RIGHT) {
|
||||
#else
|
||||
if (s_editMode>0 && (event==EVT_KEY_FIRST(KEY_MINUS) || event==EVT_KEY_REPT(KEY_MINUS))) {
|
||||
#endif
|
||||
newval += min<int>(rotencSpeed, i_max-val);
|
||||
while (isValueAvailable && !isValueAvailable(newval) && newval<=i_max) {
|
||||
newval++;
|
||||
|
@ -67,7 +70,11 @@ int checkIncDec(event_t event, int val, int i_min, int i_max, unsigned int i_fla
|
|||
AUDIO_KEY_ERROR();
|
||||
}
|
||||
}
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
else if (s_editMode>0 && event==EVT_ROTARY_LEFT) {
|
||||
#else
|
||||
if (s_editMode>0 && (event==EVT_KEY_FIRST(KEY_PLUS) || event==EVT_KEY_REPT(KEY_PLUS))) {
|
||||
#endif
|
||||
newval -= min<int>(rotencSpeed, val-i_min);
|
||||
while (isValueAvailable && !isValueAvailable(newval) && newval>=i_min) {
|
||||
newval--;
|
||||
|
@ -217,7 +224,7 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t
|
|||
if (menuTab) {
|
||||
int cc = curr;
|
||||
switch (event) {
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_PAGEUP)
|
||||
case EVT_KEY_FIRST(KEY_PAGEUP):
|
||||
#else
|
||||
case EVT_KEY_LONG(KEY_PAGE):
|
||||
|
@ -232,7 +239,7 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t
|
|||
killEvents(event);
|
||||
break;
|
||||
|
||||
#if defined(NAVIGATION_X7_TX12)
|
||||
#if defined(KEYS_GPIO_REG_PAGEDN)
|
||||
case EVT_KEY_FIRST(KEY_PAGEDN):
|
||||
#else
|
||||
case EVT_KEY_BREAK(KEY_PAGE):
|
||||
|
@ -310,12 +317,14 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
case EVT_ROTARY_RIGHT:
|
||||
case EVT_KEY_FIRST(KEY_RIGHT):
|
||||
AUDIO_KEY_PRESS();
|
||||
// no break
|
||||
case EVT_KEY_REPT(KEY_RIGHT):
|
||||
#else
|
||||
case EVT_KEY_FIRST(KEY_DOWN):
|
||||
case EVT_KEY_REPT(KEY_DOWN):
|
||||
#endif
|
||||
if (s_editMode > 0) break; // TODO it was !=
|
||||
if ((COLATTR(l_posVert) & NAVIGATION_LINE_BY_LINE)) {
|
||||
if (l_posHorz >= 0) {
|
||||
|
@ -341,12 +350,14 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t
|
|||
|
||||
l_posHorz = POS_HORZ_INIT(l_posVert);
|
||||
break;
|
||||
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
case EVT_ROTARY_LEFT:
|
||||
case EVT_KEY_FIRST(KEY_LEFT):
|
||||
AUDIO_KEY_PRESS();
|
||||
// no break
|
||||
case EVT_KEY_REPT(KEY_LEFT):
|
||||
#else
|
||||
case EVT_KEY_FIRST(KEY_UP):
|
||||
case EVT_KEY_REPT(KEY_UP):
|
||||
#endif
|
||||
if (s_editMode > 0) break; // TODO it was !=
|
||||
if ((COLATTR(l_posVert) & NAVIGATION_LINE_BY_LINE)) {
|
||||
if (l_posHorz >= 0) {
|
||||
|
|
|
@ -82,6 +82,11 @@ inline bool IS_KEY_EVT(event_t evt, uint8_t key)
|
|||
#define EVT_ROTARY_RIGHT 0xDE00
|
||||
#define IS_NEXT_EVENT(event) (event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_REPT(KEY_DOWN))
|
||||
#define IS_PREVIOUS_EVENT(event) (event==EVT_KEY_FIRST(KEY_UP) || event==EVT_KEY_REPT(KEY_UP))
|
||||
#elif defined(RADIO_T8)
|
||||
#define EVT_ROTARY_BREAK EVT_KEY_BREAK(KEY_ENTER)
|
||||
#define EVT_ROTARY_LONG EVT_KEY_LONG(KEY_ENTER)
|
||||
#define IS_NEXT_EVENT(event) (event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_REPT(KEY_DOWN))
|
||||
#define IS_PREVIOUS_EVENT(event) (event==EVT_KEY_FIRST(KEY_UP) || event==EVT_KEY_REPT(KEY_UP))
|
||||
#elif (defined(PCBHORUS) || defined(PCBTARANIS)) && defined(ROTARY_ENCODER_NAVIGATION)
|
||||
#define EVT_ROTARY_BREAK EVT_KEY_BREAK(KEY_ENTER)
|
||||
#define EVT_ROTARY_LONG EVT_KEY_LONG(KEY_ENTER)
|
||||
|
|
|
@ -29,5 +29,6 @@ if(PYTHONINTERP_FOUND)
|
|||
add_lua_export_target(x12s ${LUA_INCLUDES} -DPCBHORUS -DPCBX12S)
|
||||
add_lua_export_target(t12 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_T12)
|
||||
add_lua_export_target(tx12 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_TX12)
|
||||
add_lua_export_target(t8 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_T8)
|
||||
add_lua_export_target(t16 ${LUA_INCLUDES} -DPCBHORUS -DPCBX10 -DRADIO_T16)
|
||||
endif()
|
||||
|
|
|
@ -42,6 +42,8 @@
|
|||
#include "lua/lua_exports_t12.inc"
|
||||
#elif defined(RADIO_TX12)
|
||||
#include "lua/lua_exports_tx12.inc"
|
||||
#elif defined(RADIO_T8)
|
||||
#include "lua/lua_exports_t8.inc"
|
||||
#elif defined(PCBX9LITES)
|
||||
#include "lua/lua_exports_x9lites.inc"
|
||||
#elif defined(PCBX9LITE)
|
||||
|
@ -1779,11 +1781,11 @@ const luaR_value_entry opentxConstants[] = {
|
|||
{ "MIXSRC_SE", MIXSRC_SE },
|
||||
{ "MIXSRC_SG", MIXSRC_SG },
|
||||
#endif
|
||||
#if !defined(PCBXLITE) && !defined(PCBX9LITE)
|
||||
#if defined(HARDWARE_SWITCH_F)
|
||||
{ "MIXSRC_SF", MIXSRC_SF },
|
||||
#if !defined(RADIO_TX12)
|
||||
{ "MIXSRC_SH", MIXSRC_SH },
|
||||
#endif
|
||||
#if defined(HARDWARE_SWITCH_H)
|
||||
{ "MIXSRC_SH", MIXSRC_SH },
|
||||
#endif
|
||||
{ "MIXSRC_CH1", MIXSRC_CH1 },
|
||||
{ "SWSRC_LAST", SWSRC_LAST_LOGICAL_SWITCH },
|
||||
|
@ -1845,7 +1847,7 @@ const luaR_value_entry opentxConstants[] = {
|
|||
{ "ROTENC_LOWSPEED", ROTENC_LOWSPEED },
|
||||
{ "ROTENC_MIDSPEED", ROTENC_MIDSPEED },
|
||||
{ "ROTENC_HIGHSPEED", ROTENC_HIGHSPEED },
|
||||
#elif defined(PCBX9D) || defined(PCBX9DP) // key reverted between field nav and value change
|
||||
#elif defined(PCBX9D) || defined(PCBX9DP) || defined(RADIO_T8) // key reverted between field nav and value change
|
||||
{ "EVT_VIRTUAL_PREV", EVT_KEY_FIRST(KEY_PLUS) },
|
||||
{ "EVT_VIRTUAL_PREV_REPT", EVT_KEY_REPT(KEY_PLUS) },
|
||||
{ "EVT_VIRTUAL_NEXT", EVT_KEY_FIRST(KEY_MINUS) },
|
||||
|
@ -1882,7 +1884,7 @@ const luaR_value_entry opentxConstants[] = {
|
|||
{ "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
|
||||
{ "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
|
||||
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
|
||||
#if defined(RADIO_TX12)
|
||||
#if defined(RADIO_TX12) || defined(RADIO_T8)
|
||||
{ "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_BREAK(KEY_PAGEUP) },
|
||||
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGEDN) },
|
||||
{ "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MODEL) },
|
||||
|
|
|
@ -531,6 +531,10 @@ void perMain()
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIO_REG_BIND) && defined(BIND_KEY)
|
||||
bindButtonHandler(evt);
|
||||
#endif
|
||||
|
||||
#if defined(GUI)
|
||||
DEBUG_TIMER_START(debugTimerGuiMain);
|
||||
guiMain(evt);
|
||||
|
|
|
@ -334,6 +334,12 @@ void generalDefault()
|
|||
setDefaultOwnerId();
|
||||
#endif
|
||||
|
||||
#if defined(RADIOMASTER_RTF_RELEASE)
|
||||
// Those settings are for headless radio
|
||||
g_eeGeneral.USBMode = USB_JOYSTICK_MODE;
|
||||
g_eeGeneral.disableRtcWarning = 1;
|
||||
#endif
|
||||
|
||||
g_eeGeneral.chkSum = 0xFFFF;
|
||||
}
|
||||
|
||||
|
@ -523,6 +529,15 @@ void modelDefault(uint8_t id)
|
|||
g_model.switchWarningState |= (1 << (3*i));
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(RADIOMASTER_RTF_RELEASE)
|
||||
// Those settings are for headless radio
|
||||
g_model.trainerData.mode = TRAINER_MODE_SLAVE;
|
||||
g_model.moduleData[INTERNAL_MODULE].type = MODULE_TYPE_MULTIMODULE;
|
||||
g_model.moduleData[INTERNAL_MODULE].setMultiProtocol(MODULE_SUBTYPE_MULTI_FRSKY);
|
||||
g_model.moduleData[INTERNAL_MODULE].subType = MM_RF_FRSKY_SUBTYPE_D8;
|
||||
g_model.moduleData[INTERNAL_MODULE].failsafeMode = FAILSAFE_NOPULSES;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool isInputRecursive(int index)
|
||||
|
@ -917,7 +932,7 @@ void checkAll()
|
|||
checkFailsafe();
|
||||
checkRSSIAlarmsDisabled();
|
||||
|
||||
#if defined(SDCARD)
|
||||
#if defined(SDCARD) && !defined(RADIOMASTER_RTF_RELEASE)
|
||||
checkSDVersion();
|
||||
#endif
|
||||
|
||||
|
@ -2183,6 +2198,7 @@ uint32_t pwrCheck()
|
|||
#endif
|
||||
event_t evt = getEvent(false);
|
||||
DISPLAY_WARNING(evt);
|
||||
LED_ERROR_BEGIN();
|
||||
lcdRefresh();
|
||||
|
||||
if (warningResult) {
|
||||
|
@ -2192,6 +2208,7 @@ uint32_t pwrCheck()
|
|||
else if (!warningText) {
|
||||
// shutdown has been cancelled
|
||||
pwr_check_state = PWR_CHECK_PAUSED;
|
||||
LED_ERROR_END();
|
||||
return e_power_on;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,6 +69,12 @@
|
|||
#define CASE_GYRO(x)
|
||||
#endif
|
||||
|
||||
#if defined(BACKLIGHT_GPIO)
|
||||
#define CASE_BACKLIGHT(x) x,
|
||||
#else
|
||||
#define CASE_BACKLIGHT(x)
|
||||
#endif
|
||||
|
||||
#if defined(LUA)
|
||||
#define CASE_LUA(x) x,
|
||||
#else
|
||||
|
@ -382,6 +388,8 @@ inline bool SPLASH_NEEDED()
|
|||
#define ROTENC_HIGHSPEED 50
|
||||
#define ROTENC_DELAY_MIDSPEED 32
|
||||
#define ROTENC_DELAY_HIGHSPEED 16
|
||||
#elif defined(RADIO_T8)
|
||||
constexpr uint8_t rotencSpeed = 1;
|
||||
#endif
|
||||
|
||||
constexpr uint8_t HEART_TIMER_10MS = 0x01;
|
||||
|
@ -437,6 +445,10 @@ extern uint8_t potsPos[NUM_XPOTS];
|
|||
bool trimDown(uint8_t idx);
|
||||
void readKeysAndTrims();
|
||||
|
||||
#if defined(KEYS_GPIO_REG_BIND)
|
||||
void bindButtonHandler(event_t event);
|
||||
#endif
|
||||
|
||||
uint16_t evalChkSum();
|
||||
|
||||
void alert(const char * title, const char * msg, uint8_t sound);
|
||||
|
@ -998,7 +1010,13 @@ constexpr uint8_t OPENTX_START_NO_CHECKS = 0x04;
|
|||
|
||||
#if defined(STATUS_LEDS)
|
||||
#define LED_ERROR_BEGIN() ledRed()
|
||||
#if defined(RADIO_T8)
|
||||
// Because of green backlit logo, green is preferred on this radio
|
||||
#define LED_ERROR_END() ledGreen()
|
||||
#define LED_BIND() ledBlue()
|
||||
#else
|
||||
#define LED_ERROR_END() ledBlue()
|
||||
#endif
|
||||
#else
|
||||
#define LED_ERROR_BEGIN()
|
||||
#define LED_ERROR_END()
|
||||
|
|
|
@ -97,6 +97,9 @@ static const char * const options[] = {
|
|||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_ACCESS_MOD)
|
||||
"externalaccessmod",
|
||||
#endif
|
||||
#if defined(BIND_KEY)
|
||||
"bindkey",
|
||||
#endif
|
||||
nullptr //sentinel
|
||||
};
|
||||
|
|
|
@ -203,6 +203,14 @@ enum MMRFrskySubtypes {
|
|||
MM_RF_FRSKY_SUBTYPE_D16_CLONED
|
||||
};
|
||||
|
||||
enum MMRFrskyX2Subtypes {
|
||||
MM_RF_FRSKYX2_SUBTYPE_D16,
|
||||
MM_RF_FRSKYX2_SUBTYPE_D8,
|
||||
MM_RF_FRSKYX2_SUBTYPE_D16_LBT,
|
||||
MM_RF_FRSKYX2_SUBTYPE_D16_LBT_8CH,
|
||||
MM_RF_FRSKYX2_SUBTYPE_D16_CLONED
|
||||
};
|
||||
|
||||
enum ModuleSubtypeDSM2 {
|
||||
DSM2_PROTO_LP45,
|
||||
DSM2_PROTO_DSM2,
|
||||
|
|
|
@ -145,6 +145,8 @@ const char * getBasename(const char * path);
|
|||
#define OTX_FOURCC 0x3D78746F // otx for Jumper T12
|
||||
#elif defined(RADIO_TX12)
|
||||
#define OTX_FOURCC 0x4178746F // otx for Radiomaster TX12
|
||||
#elif defined(RADIO_T8)
|
||||
#define OTX_FOURCC 0x4378746F // otx for Radiomaster T8
|
||||
#elif defined(PCBX7)
|
||||
#define OTX_FOURCC 0x3678746F // otx for Taranis X7 / X7S / X7 Express / X7S Express
|
||||
#elif defined(PCBX9LITES)
|
||||
|
|
|
@ -273,6 +273,15 @@ void OpenTxSim::updateKeysAndSwitches(bool start)
|
|||
KEY_Down, KEY_EXIT,
|
||||
KEY_Right, KEY_TELE,
|
||||
KEY_Left, KEY_SYS,
|
||||
#elif defined(RADIO_T8)
|
||||
KEY_Page_Up, KEY_PAGEUP,
|
||||
KEY_Page_Down, KEY_PAGEDN,
|
||||
KEY_Return, KEY_ENTER,
|
||||
KEY_Right, KEY_MODEL,
|
||||
KEY_BackSpace, KEY_EXIT,
|
||||
KEY_Left, KEY_SYS,
|
||||
KEY_Up, KEY_PLUS,
|
||||
KEY_Down, KEY_MINUS,
|
||||
#elif defined(PCBTARANIS)
|
||||
KEY_Page_Up, KEY_MENU,
|
||||
#if defined(KEYS_GPIO_REG_PAGE)
|
||||
|
|
|
@ -125,6 +125,9 @@ void adcInit()
|
|||
ADC_MAIN->SQR2 = (ADC_CHANNEL_BATT << 0) + (ADC_Channel_Vbat << 5);
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH << 0) + (ADC_CHANNEL_STICK_LV << 5) + (ADC_CHANNEL_STICK_RV << 10) + (ADC_CHANNEL_STICK_RH << 15) + (ADC_CHANNEL_POT1 << 20) + (ADC_CHANNEL_POT2 << 25);
|
||||
}
|
||||
#elif defined(RADIO_T8)
|
||||
ADC_MAIN->SQR2 = (ADC_CHANNEL_BATT << 0) + (ADC_Channel_Vbat << 5);
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH << 0) + (ADC_CHANNEL_STICK_LV << 5) + (ADC_CHANNEL_STICK_RV << 10) + (ADC_CHANNEL_STICK_RH << 15);
|
||||
#elif defined(PCBX7)
|
||||
ADC_MAIN->SQR2 = (ADC_CHANNEL_BATT << 0) + (ADC_Channel_Vbat << 5);
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH << 0) + (ADC_CHANNEL_STICK_LV << 5) + (ADC_CHANNEL_STICK_RV << 10) + (ADC_CHANNEL_STICK_RH << 15) + (ADC_CHANNEL_POT1 << 20) + (ADC_CHANNEL_POT2 << 25);
|
||||
|
|
|
@ -89,7 +89,7 @@ set(BOOTLOADER_SRC
|
|||
bin_files.cpp
|
||||
)
|
||||
|
||||
if(PCB STREQUAL X12S OR PCB STREQUAL X10 OR PCB STREQUAL X9E OR (PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019) OR (PCB STREQUAL X7 AND NOT (PCBREV STREQUAL T12)) OR PCB STREQUAL X9LITE OR PCB STREQUAL X9LITES)
|
||||
if(PCB STREQUAL X12S OR PCB STREQUAL X10 OR PCB STREQUAL X9E OR (PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019) OR (PCB STREQUAL X7 AND NOT (PCBREV STREQUAL T12 OR PCBREV STREQUAL T8)) OR PCB STREQUAL X9LITE OR PCB STREQUAL X9LITES)
|
||||
set(BOOTLOADER_SRC
|
||||
${BOOTLOADER_SRC}
|
||||
../../../../../targets/common/arm/stm32/rotary_encoder_driver.cpp
|
||||
|
|
|
@ -218,8 +218,13 @@ int main()
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(RADIO_T8) && !defined(RADIOMASTER_RELEASE)
|
||||
// Bind button not pressed
|
||||
if ((~KEYS_GPIO_REG_BIND & KEYS_GPIO_PIN_BIND) == false) {
|
||||
#else
|
||||
// LHR & RHL trims not pressed simultanously
|
||||
if (readTrims() != BOOTLOADER_KEYS) {
|
||||
#endif
|
||||
// Start main application
|
||||
jumpTo(APP_START_ADDRESS);
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ void pwrInit()
|
|||
GPIO_Init(SD_PRESENT_GPIO, &GPIO_InitStructure);
|
||||
#endif
|
||||
|
||||
#if defined(INTMODULE_USART) && defined(TRAINER_MODULE_CPPM_GPIO_PIN)
|
||||
#if defined(INTMODULE_USART) && defined(TRAINER_MODULE_CPPM)
|
||||
GPIO_SetBits(TRAINER_MODULE_CPPM_GPIO, TRAINER_MODULE_CPPM_GPIO_PIN);
|
||||
GPIO_InitStructure.GPIO_Pin = TRAINER_MODULE_CPPM_GPIO_PIN;
|
||||
GPIO_Init(TRAINER_MODULE_CPPM_GPIO, &GPIO_InitStructure);
|
||||
|
|
|
@ -12,6 +12,7 @@ set(PPM_LIMITS_SYMETRICAL YES)
|
|||
set(PXX1 YES)
|
||||
set(AFHDS3 NO)
|
||||
set(GHOST NO)
|
||||
add_definitions(-DHARDWARE_EXTERNAL_MODULE)
|
||||
add_definitions(-DDISABLE_MULTI_UPDATE)
|
||||
|
||||
if(PCB STREQUAL 9XRPRO)
|
||||
|
|
|
@ -6,6 +6,9 @@ option(AFHDS3 "AFHDS3 TX Module" ON)
|
|||
option(GHOST "Ghost TX Module" ON)
|
||||
option(INTERNAL_MODULE_PPM "Support for PPM internal module" OFF)
|
||||
option(AUTOUPDATE "Auto update internal chips from SD" OFF)
|
||||
option(BIND_KEY "Enable bind button" OFF)
|
||||
|
||||
set(EXTERNAL_MODULE YES)
|
||||
|
||||
if(PCB STREQUAL X9E)
|
||||
option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON)
|
||||
|
@ -144,6 +147,24 @@ elseif(PCB STREQUAL X7)
|
|||
add_definitions(-DRADIO_TX12)
|
||||
add_definitions(-DEEPROM_VARIANT=0x4002)
|
||||
add_definitions(-DMANUFACTURER_RADIOMASTER)
|
||||
elseif(PCBREV STREQUAL T8)
|
||||
option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" ON)
|
||||
set(EXTERNAL_MODULE NO)
|
||||
set(AFHDS3 NO)
|
||||
set(FLAVOUR t8)
|
||||
set(NAVIGATION_TYPE x7)
|
||||
set(CPU_TYPE STM32F2)
|
||||
set(CPU_TYPE_FULL STM32F205xE) # for size report
|
||||
set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
|
||||
set(ROTARY_ENCODER NO)
|
||||
set(LUA_EXPORT lua_export_t8)
|
||||
set(BLUETOOTH NO)
|
||||
if(RADIOMASTER_RELEASE)
|
||||
set(BIND_KEY YES)
|
||||
endif()
|
||||
add_definitions(-DRADIO_T8)
|
||||
add_definitions(-DEEPROM_VARIANT=0x4004)
|
||||
add_definitions(-DMANUFACTURER_RADIOMASTER)
|
||||
elseif(PCBREV STREQUAL ACCESS)
|
||||
option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF)
|
||||
option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" ON)
|
||||
|
@ -334,6 +355,14 @@ if(ROTARY_ENCODER)
|
|||
)
|
||||
endif()
|
||||
|
||||
if(BIND_KEY)
|
||||
set(TARGET_SRC
|
||||
${TARGET_SRC}
|
||||
bind_button_driver.cpp
|
||||
)
|
||||
add_definitions(-DBIND_KEY)
|
||||
endif()
|
||||
|
||||
if(USB_CHARGER)
|
||||
set(TARGET_SRC ${TARGET_SRC} usb_charger_driver.cpp)
|
||||
add_definitions(-DUSB_CHARGER)
|
||||
|
@ -454,4 +483,8 @@ if(INTERNAL_MODULE_PPM)
|
|||
add_definitions(-DINTERNAL_MODULE_PPM)
|
||||
endif()
|
||||
|
||||
if(EXTERNAL_MODULE)
|
||||
add_definitions(-DHARDWARE_EXTERNAL_MODULE)
|
||||
endif()
|
||||
|
||||
set(RADIO_DEPENDENCIES ${RADIO_DEPENDENCIES} ${BITMAPS_TARGET})
|
||||
|
|
|
@ -20,7 +20,13 @@
|
|||
|
||||
#include "opentx.h"
|
||||
|
||||
#if defined(PCBX9E)
|
||||
#if !defined(BACKLIGHT_GPIO)
|
||||
// no backlight
|
||||
void backlightInit() {}
|
||||
void backlightEnable(uint8_t level) {}
|
||||
void backlightDisable() {}
|
||||
uint8_t isBacklightEnabled() {return false;}
|
||||
#elif defined(PCBX9E)
|
||||
void backlightInit()
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
|
100
radio/src/targets/taranis/bind_button_driver.cpp
Normal file
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
* Copyright (C) OpenTX
|
||||
*
|
||||
* Based on code named
|
||||
* th9x - http://code.google.com/p/th9x
|
||||
* er9x - http://code.google.com/p/er9x
|
||||
* gruvin9x - http://code.google.com/p/gruvin9x
|
||||
*
|
||||
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
|
||||
bool setBindProtocolSelection()
|
||||
{
|
||||
int16_t xPos = calibratedAnalogs[CONVERT_MODE(0)];
|
||||
int16_t yPos = calibratedAnalogs[CONVERT_MODE(1)];
|
||||
|
||||
// Center: D8
|
||||
if (abs(xPos < 50 && abs(yPos) < 50)) {
|
||||
g_model.moduleData[INTERNAL_MODULE].setMultiProtocol(MODULE_SUBTYPE_MULTI_FRSKY);
|
||||
g_model.moduleData[INTERNAL_MODULE].subType = MM_RF_FRSKY_SUBTYPE_D8;
|
||||
storageDirty(EE_MODEL);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Top left: D16 FCC
|
||||
if (xPos < -512 && yPos > 512) {
|
||||
g_model.moduleData[INTERNAL_MODULE].setMultiProtocol(MODULE_SUBTYPE_MULTI_FRSKY);
|
||||
g_model.moduleData[INTERNAL_MODULE].subType = MM_RF_FRSKY_SUBTYPE_D16;
|
||||
g_model.moduleData[INTERNAL_MODULE].failsafeMode = FAILSAFE_NOPULSES;
|
||||
storageDirty(EE_MODEL);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Top right: D16 LBT
|
||||
if (xPos > 512 && yPos > 512) {
|
||||
g_model.moduleData[INTERNAL_MODULE].setMultiProtocol(MODULE_SUBTYPE_MULTI_FRSKY);
|
||||
g_model.moduleData[INTERNAL_MODULE].subType = MM_RF_FRSKY_SUBTYPE_D16_LBT;
|
||||
g_model.moduleData[INTERNAL_MODULE].failsafeMode = FAILSAFE_NOPULSES;
|
||||
storageDirty(EE_MODEL);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Bottom left: V2.1 D16 FCC
|
||||
if (xPos < -512 && yPos < -512) {
|
||||
g_model.moduleData[INTERNAL_MODULE].setMultiProtocol(MODULE_SUBTYPE_MULTI_FRSKYX2);
|
||||
g_model.moduleData[INTERNAL_MODULE].subType = MM_RF_FRSKYX2_SUBTYPE_D16;
|
||||
g_model.moduleData[INTERNAL_MODULE].failsafeMode = FAILSAFE_NOPULSES;
|
||||
storageDirty(EE_MODEL);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Bottom right: V2.1 D16 LBT
|
||||
if (xPos > 512 && yPos < -512) {
|
||||
g_model.moduleData[INTERNAL_MODULE].setMultiProtocol(MODULE_SUBTYPE_MULTI_FRSKYX2);
|
||||
g_model.moduleData[INTERNAL_MODULE].subType = MM_RF_FRSKYX2_SUBTYPE_D16_LBT;
|
||||
g_model.moduleData[INTERNAL_MODULE].failsafeMode = FAILSAFE_NOPULSES;
|
||||
storageDirty(EE_MODEL);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void bindButtonHandler(event_t event)
|
||||
{
|
||||
if( !isModuleMultimodule(INTERNAL_MODULE))
|
||||
return;
|
||||
|
||||
if (event == EVT_KEY_LONG(KEY_BIND) && getMultiBindStatus(INTERNAL_MODULE) == MULTI_NORMAL_OPERATION) {
|
||||
if (setBindProtocolSelection()) {
|
||||
setMultiBindStatus(INTERNAL_MODULE, MULTI_BIND_INITIATED);
|
||||
moduleState[INTERNAL_MODULE].mode = MODULE_MODE_BIND;
|
||||
}
|
||||
}
|
||||
|
||||
if (getMultiBindStatus(INTERNAL_MODULE) == MULTI_BIND_INITIATED) {
|
||||
if (FAST_BLINK_ON_PHASE)
|
||||
LED_BIND();
|
||||
else
|
||||
ledOff();
|
||||
}
|
||||
|
||||
if (getMultiBindStatus(INTERNAL_MODULE) == MULTI_BIND_FINISHED) {
|
||||
setMultiBindStatus(INTERNAL_MODULE, MULTI_NORMAL_OPERATION);
|
||||
moduleState[INTERNAL_MODULE].mode = MODULE_MODE_NORMAL;
|
||||
LED_ERROR_END();
|
||||
}
|
||||
}
|
|
@ -272,6 +272,8 @@ void boardOff()
|
|||
|
||||
#if defined (RADIO_TX12)
|
||||
#define BATTERY_DIVIDER 22830
|
||||
#elif defined (RADIO_T8)
|
||||
#define BATTERY_DIVIDER 50000
|
||||
#else
|
||||
#define BATTERY_DIVIDER 26214
|
||||
#endif
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
#include "board_common.h"
|
||||
#include "hal.h"
|
||||
|
||||
#if defined(RADIO_TX12)
|
||||
#if defined(RADIO_TX12) || defined(RADIO_TX12)
|
||||
#define NAVIGATION_X7_TX12
|
||||
#endif
|
||||
|
||||
|
@ -152,7 +152,7 @@ void extmoduleSendInvertedByte(uint8_t byte);
|
|||
// Trainer driver
|
||||
#define SLAVE_MODE() (g_model.trainerData.mode == TRAINER_MODE_SLAVE)
|
||||
|
||||
#if defined(PCBX9D) || (defined(PCBX9DP) && PCBREV < 2019)
|
||||
#if defined(TRAINER_DETECT_GPIO)
|
||||
// Trainer detect is a switch on the jack
|
||||
#define TRAINER_CONNECTED() (GPIO_ReadInputDataBit(TRAINER_DETECT_GPIO, TRAINER_DETECT_GPIO_PIN) == Bit_RESET)
|
||||
#elif defined(PCBXLITES)
|
||||
|
@ -270,6 +270,10 @@ enum EnumKeys
|
|||
KEY_COUNT,
|
||||
KEY_MAX = KEY_COUNT - 1,
|
||||
|
||||
#if defined(KEYS_GPIO_REG_BIND)
|
||||
KEY_BIND,
|
||||
#endif
|
||||
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
KEY_PLUS,
|
||||
KEY_MINUS,
|
||||
|
@ -355,7 +359,7 @@ enum EnumSwitchesPositions
|
|||
SW_SE1,
|
||||
SW_SE2,
|
||||
#endif
|
||||
#if defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E) || defined(PCBX7) || defined(PCBXLITES) || defined(PCBX9LITES)
|
||||
#if defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E) || defined(PCBX7) || defined(PCBXLITES) || defined(PCBX9LITES) || defined(RADIO_T8)
|
||||
SW_SF0,
|
||||
SW_SF1,
|
||||
SW_SF2,
|
||||
|
@ -365,7 +369,7 @@ enum EnumSwitchesPositions
|
|||
SW_SG1,
|
||||
SW_SG2,
|
||||
#endif
|
||||
#if defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E) || (defined(PCBX7) && !defined(RADIO_TX12))
|
||||
#if defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E) || (defined(PCBX7) && !defined(RADIO_TX12)) || defined(RADIO_T8)
|
||||
SW_SH0,
|
||||
SW_SH1,
|
||||
SW_SH2,
|
||||
|
@ -442,6 +446,11 @@ enum EnumSwitchesPositions
|
|||
#define STORAGE_NUM_SWITCHES NUM_SWITCHES
|
||||
#define DEFAULT_SWITCH_CONFIG (SWITCH_3POS << 10) + (SWITCH_3POS << 8) + (SWITCH_TOGGLE << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_TOGGLE << 0)
|
||||
#define DEFAULT_POTS_CONFIG (POT_WITH_DETENT << 0) + (POT_WITH_DETENT << 2);
|
||||
#elif defined(RADIO_T8)
|
||||
#define NUM_SWITCHES 4
|
||||
#define STORAGE_NUM_SWITCHES 8
|
||||
#define DEFAULT_SWITCH_CONFIG (SWITCH_2POS << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_2POS << 0);
|
||||
#define DEFAULT_POTS_CONFIG (0)
|
||||
#elif defined(PCBX7ACCESS)
|
||||
#define NUM_SWITCHES 7
|
||||
#define STORAGE_NUM_SWITCHES 8
|
||||
|
@ -544,6 +553,11 @@ enum Analogs {
|
|||
#define NUM_SLIDERS 0
|
||||
#define STORAGE_NUM_POTS 1
|
||||
#define STORAGE_NUM_SLIDERS 0
|
||||
#elif defined(RADIO_T8)
|
||||
#define NUM_POTS 0
|
||||
#define NUM_SLIDERS 0
|
||||
#define STORAGE_NUM_POTS 2
|
||||
#define STORAGE_NUM_SLIDERS 0
|
||||
#elif defined(PCBXLITE) || defined(PCBX7)
|
||||
#define NUM_POTS 2
|
||||
#define NUM_SLIDERS 0
|
||||
|
@ -644,6 +658,11 @@ extern uint16_t adcValues[NUM_ANALOGS];
|
|||
#define BATTERY_WARN 66 // 6.6V
|
||||
#define BATTERY_MIN 67 // 6.7V
|
||||
#define BATTERY_MAX 83 // 8.3V
|
||||
#elif defined(RADIO_T8)
|
||||
// 1S Li-ion / Lipo
|
||||
#define BATTERY_WARN 33 // 3.3V
|
||||
#define BATTERY_MIN 32 // 3.2V
|
||||
#define BATTERY_MAX 42 // 4.2V
|
||||
#else
|
||||
// NI-MH 7.2V
|
||||
#define BATTERY_WARN 65 // 6.5V
|
||||
|
@ -710,6 +729,10 @@ uint8_t isBacklightEnabled();
|
|||
#define USB_NAME "Radiomaster TX12"
|
||||
#define USB_MANUFACTURER 'R', 'M', '_', 'T', 'X', ' ', ' ', ' ' /* 8 bytes */
|
||||
#define USB_PRODUCT 'R', 'M', ' ', 'T', 'X', '1', '2', ' ' /* 8 Bytes */
|
||||
#elif defined(RADIO_T8)
|
||||
#define USB_NAME "Radiomaster T8"
|
||||
#define USB_MANUFACTURER 'R', 'M', '_', 'T', 'X', ' ', ' ', ' ' /* 8 bytes */
|
||||
#define USB_PRODUCT 'R', 'M', ' ', 'T', '8', ' ', ' ', ' ' /* 8 Bytes */
|
||||
#else
|
||||
#define USB_NAME "FrSky Taranis"
|
||||
#define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
|
||||
|
@ -864,8 +887,10 @@ void bluetoothDisable();
|
|||
#endif
|
||||
|
||||
// USB Charger
|
||||
#if defined(USB_CHARGER)
|
||||
void usbChargerInit();
|
||||
bool usbChargerLed();
|
||||
#endif
|
||||
|
||||
// LED driver
|
||||
void ledInit();
|
||||
|
@ -889,7 +914,7 @@ void ledBlue();
|
|||
#define IS_LCD_RESET_NEEDED() true
|
||||
#define LCD_CONTRAST_MIN 10
|
||||
#define LCD_CONTRAST_MAX 30
|
||||
#if defined(RADIO_TX12)
|
||||
#if defined(RADIO_TX12) || defined(RADIO_T8)
|
||||
#define LCD_CONTRAST_DEFAULT 21
|
||||
#else
|
||||
#define LCD_CONTRAST_DEFAULT 15
|
||||
|
|
|
@ -74,6 +74,25 @@
|
|||
#define KEYS_GPIO_PIN_MDL GPIO_Pin_11 // PE.11
|
||||
#define KEYS_GPIO_REG_TELE GPIOD->IDR
|
||||
#define KEYS_GPIO_PIN_TELE GPIO_Pin_2 // PD.02
|
||||
#elif defined(RADIO_T8)
|
||||
#define KEYS_GPIO_REG_PAGEUP GPIOD->IDR
|
||||
#define KEYS_GPIO_PIN_PAGEUP GPIO_Pin_3 // PD.03
|
||||
#define KEYS_GPIO_REG_PAGEDN GPIOD->IDR
|
||||
#define KEYS_GPIO_PIN_PAGEDN GPIO_Pin_7 // PD.07
|
||||
#define KEYS_GPIO_REG_EXIT GPIOB->IDR
|
||||
#define KEYS_GPIO_PIN_EXIT GPIO_Pin_3 // PB.03
|
||||
#define KEYS_GPIO_REG_ENTER GPIOA->IDR
|
||||
#define KEYS_GPIO_PIN_ENTER GPIO_Pin_13 // PA.13
|
||||
#define KEYS_GPIO_REG_SYS GPIOB->IDR
|
||||
#define KEYS_GPIO_PIN_SYS GPIO_Pin_4 // PB.04
|
||||
#define KEYS_GPIO_REG_MDL GPIOE->IDR
|
||||
#define KEYS_GPIO_PIN_MDL GPIO_Pin_11 // PE.11
|
||||
#define KEYS_GPIO_REG_PLUS GPIOE->IDR
|
||||
#define KEYS_GPIO_PIN_PLUS GPIO_Pin_9 // PE.09
|
||||
#define KEYS_GPIO_REG_MINUS GPIOE->IDR
|
||||
#define KEYS_GPIO_PIN_MINUS GPIO_Pin_10 // PE.10
|
||||
#define KEYS_GPIO_REG_BIND GPIOA->IDR
|
||||
#define KEYS_GPIO_PIN_BIND GPIO_Pin_10 // PA.10
|
||||
#elif defined(PCBX7)
|
||||
#define KEYS_GPIO_REG_PAGE GPIOD->IDR
|
||||
#define KEYS_GPIO_PIN_PAGE GPIO_Pin_3 // PD.03
|
||||
|
@ -332,6 +351,11 @@
|
|||
#define HARDWARE_SWITCH_A
|
||||
#define SWITCHES_GPIO_REG_A GPIOC->IDR
|
||||
#define SWITCHES_GPIO_PIN_A GPIO_Pin_13 // PC.13
|
||||
#elif defined(RADIO_T8)
|
||||
#define STORAGE_SWITCH_A
|
||||
#define HARDWARE_SWITCH_A
|
||||
#define SWITCHES_GPIO_REG_A GPIOE->IDR
|
||||
#define SWITCHES_GPIO_PIN_A GPIO_Pin_14 // PE.14
|
||||
#elif defined(PCBX7)
|
||||
#define STORAGE_SWITCH_A
|
||||
#define HARDWARE_SWITCH_A
|
||||
|
@ -362,6 +386,13 @@
|
|||
#define SWITCHES_GPIO_PIN_B_L GPIO_Pin_6 // PA.06
|
||||
#define SWITCHES_GPIO_REG_B_H GPIOA->IDR
|
||||
#define SWITCHES_GPIO_PIN_B_H GPIO_Pin_5 // PA.05
|
||||
#elif defined(RADIO_T8)
|
||||
#define STORAGE_SWITCH_B
|
||||
#define HARDWARE_SWITCH_B
|
||||
#define SWITCHES_GPIO_REG_B_L GPIOE->IDR
|
||||
#define SWITCHES_GPIO_PIN_B_L GPIO_Pin_7 // PE.07
|
||||
#define SWITCHES_GPIO_REG_B_H GPIOE->IDR
|
||||
#define SWITCHES_GPIO_PIN_B_H GPIO_Pin_13 // PE.13
|
||||
#elif defined(PCBX7)
|
||||
#define STORAGE_SWITCH_B
|
||||
#define HARDWARE_SWITCH_B
|
||||
|
@ -406,6 +437,13 @@
|
|||
#define SWITCHES_GPIO_PIN_C_L GPIO_Pin_11 // PD.11
|
||||
#define SWITCHES_GPIO_REG_C_H GPIOE->IDR
|
||||
#define SWITCHES_GPIO_PIN_C_H GPIO_Pin_0 // PE.00
|
||||
#elif defined(RADIO_T8)
|
||||
#define STORAGE_SWITCH_C
|
||||
#define HARDWARE_SWITCH_C
|
||||
#define SWITCHES_GPIO_REG_C_L GPIOE->IDR
|
||||
#define SWITCHES_GPIO_PIN_C_L GPIO_Pin_2 // PE.02
|
||||
#define SWITCHES_GPIO_REG_C_H GPIOE->IDR
|
||||
#define SWITCHES_GPIO_PIN_C_H GPIO_Pin_1 // PE.01
|
||||
#elif defined(PCBX7)
|
||||
#define STORAGE_SWITCH_C
|
||||
#define HARDWARE_SWITCH_C
|
||||
|
@ -448,6 +486,11 @@
|
|||
#define SWITCHES_GPIO_PIN_D_L GPIO_Pin_4 // PB.04
|
||||
#define SWITCHES_GPIO_REG_D_H GPIOB->IDR
|
||||
#define SWITCHES_GPIO_PIN_D_H GPIO_Pin_5 // PB.05
|
||||
#elif defined(RADIO_T8)
|
||||
#define STORAGE_SWITCH_D
|
||||
#define HARDWARE_SWITCH_D
|
||||
#define SWITCHES_GPIO_REG_D GPIOD->IDR
|
||||
#define SWITCHES_GPIO_PIN_D GPIO_Pin_14 // PD.14
|
||||
#elif defined(RADIO_TX12)
|
||||
#define STORAGE_SWITCH_D
|
||||
#define HARDWARE_SWITCH_D
|
||||
|
@ -539,6 +582,9 @@
|
|||
#define SWITCHES_GPIO_PIN_F_L GPIO_Pin_1 // PE.01
|
||||
#define SWITCHES_GPIO_REG_F_H GPIOE->IDR
|
||||
#define SWITCHES_GPIO_PIN_F_H GPIO_Pin_2 // PE.02
|
||||
#elif defined(RADIO_T8)
|
||||
#define STORAGE_SWITCH_F
|
||||
// no SWF
|
||||
#elif defined(PCBX7)
|
||||
#define STORAGE_SWITCH_F
|
||||
#define HARDWARE_SWITCH_F
|
||||
|
@ -563,7 +609,7 @@
|
|||
#define HARDWARE_SWITCH_G
|
||||
#define SWITCHES_GPIO_REG_G GPIOC->IDR
|
||||
#define SWITCHES_GPIO_PIN_G GPIO_Pin_2 // PC.02
|
||||
#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE)
|
||||
#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_T8)
|
||||
// no SWG
|
||||
#else
|
||||
#define STORAGE_SWITCH_G
|
||||
|
@ -586,6 +632,9 @@
|
|||
#define SWITCHES_GPIO_PIN_H GPIO_Pin_14 // PD.14
|
||||
#elif defined(PCBXLITE) || defined(PCBX9LITE)
|
||||
// no SWH
|
||||
#elif defined(RADIO_T8)
|
||||
#define STORAGE_SWITCH_H
|
||||
// no SWH
|
||||
#elif defined(RADIO_TX12)
|
||||
#elif defined(PCBX7)
|
||||
#define STORAGE_SWITCH_H
|
||||
|
@ -615,6 +664,10 @@
|
|||
#define SWITCHES_GPIO_REG_I GPIOC->IDR
|
||||
#define SWITCHES_GPIO_PIN_I GPIO_Pin_13 // PC.13
|
||||
#define STORAGE_SWITCH_J
|
||||
#elif defined(RADIO_T8)
|
||||
#define STORAGE_SWITCH_I
|
||||
#define STORAGE_SWITCH_J
|
||||
// no SWI/J
|
||||
#elif defined(RADIO_TX12)
|
||||
#define STORAGE_SWITCH_I
|
||||
#define HARDWARE_SWITCH_I
|
||||
|
@ -746,6 +799,13 @@
|
|||
#define KEYS_GPIOC_PINS (GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3|GPIO_Pin_13)
|
||||
#define KEYS_GPIOD_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15)
|
||||
#define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_8| GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)
|
||||
#elif defined(RADIO_T8)
|
||||
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
|
||||
#define KEYS_GPIOA_PINS (KEYS_GPIO_PIN_ENTER | KEYS_GPIO_PIN_BIND)
|
||||
#define KEYS_GPIOB_PINS (KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_SYS)
|
||||
#define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RVD)
|
||||
#define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_PAGEUP | KEYS_GPIO_PIN_PAGEDN | SWITCHES_GPIO_PIN_D | TRIMS_GPIO_PIN_LHL)
|
||||
#define KEYS_GPIOE_PINS (SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_C_L | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_LVD | SWITCHES_GPIO_PIN_B_L | KEYS_GPIO_PIN_PLUS | KEYS_GPIO_PIN_MINUS | KEYS_GPIO_PIN_MDL | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_A)
|
||||
#elif defined(RADIO_X7ACCESS)
|
||||
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
|
||||
#define KEYS_GPIOA_PINS GPIO_Pin_5
|
||||
|
@ -900,6 +960,25 @@
|
|||
#define ADC_CHANNEL_POT2 ADC_Channel_12 // ADC1_IN12
|
||||
#define ADC_CHANNEL_BATT ADC_Channel_10 // ADC1_IN10
|
||||
#define ADC_VREF_PREC2 330
|
||||
#elif defined(RADIO_T8)
|
||||
// No pots
|
||||
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2)
|
||||
#define ADC_RCC_APB1Periph 0
|
||||
#define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1
|
||||
#define ADC_GPIO_PIN_STICK_RV GPIO_Pin_0 // PA.00
|
||||
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_1 // PA.01
|
||||
#define ADC_GPIO_PIN_STICK_LV GPIO_Pin_2 // PA.02
|
||||
#define ADC_GPIO_PIN_STICK_LH GPIO_Pin_3 // PA.03
|
||||
#define ADC_CHANNEL_STICK_RV ADC_Channel_0 // ADC1_IN0
|
||||
#define ADC_CHANNEL_STICK_RH ADC_Channel_1 // ADC1_IN1
|
||||
#define ADC_CHANNEL_STICK_LV ADC_Channel_2 // ADC1_IN2
|
||||
#define ADC_CHANNEL_STICK_LH ADC_Channel_3 // ADC1_IN3
|
||||
#define ADC_GPIO_PIN_BATT GPIO_Pin_0 // PC.00
|
||||
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV)
|
||||
#define ADC_GPIOB_PINS 0
|
||||
#define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT
|
||||
#define ADC_CHANNEL_BATT ADC_Channel_10
|
||||
#define ADC_VREF_PREC2 300
|
||||
#elif defined(PCBX7)
|
||||
#define HARDWARE_POT1
|
||||
#define HARDWARE_POT2
|
||||
|
@ -1027,6 +1106,16 @@
|
|||
#define LED_BLUE_GPIO_PIN GPIO_Pin_1 // PB.01
|
||||
#define LED_RED_GPIO GPIOC
|
||||
#define LED_RED_GPIO_PIN GPIO_Pin_4 // PC.04
|
||||
#elif defined(RADIO_T8)
|
||||
#define STATUS_LEDS
|
||||
#define GPIO_LED_GPIO_ON GPIO_SetBits
|
||||
#define GPIO_LED_GPIO_OFF GPIO_ResetBits
|
||||
#define LED_RED_GPIO GPIOC
|
||||
#define LED_RED_GPIO_PIN GPIO_Pin_4 // PC.04
|
||||
#define LED_BLUE_GPIO GPIOC
|
||||
#define LED_BLUE_GPIO_PIN GPIO_Pin_5 // PC.05
|
||||
#define LED_GREEN_GPIO GPIOB
|
||||
#define LED_GREEN_GPIO_PIN GPIO_Pin_1 // PB.01
|
||||
#elif defined(PCBX7)
|
||||
#define STATUS_LEDS
|
||||
#define GPIO_LED_GPIO_ON GPIO_SetBits
|
||||
|
@ -1152,7 +1241,7 @@
|
|||
#define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream5_IRQHandler
|
||||
#define INTMODULE_DMA_FLAG_TC DMA_IT_TCIF5
|
||||
#define INTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
|
||||
#elif defined(RADIO_T12) || defined(RADIO_TX12)
|
||||
#elif defined(RADIO_T12) || defined(RADIO_TX12) || defined(RADIO_T8)
|
||||
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1)
|
||||
#define INTMODULE_RCC_APB1Periph (RCC_APB1Periph_USART3 | RCC_APB1Periph_TIM2)
|
||||
#define INTMODULE_RCC_APB2Periph 0
|
||||
|
@ -1401,7 +1490,7 @@
|
|||
#define TELEMETRY_EXTI_IRQn EXTI9_5_IRQn
|
||||
#define TELEMETRY_EXTI_TRIGGER EXTI_Trigger_Rising
|
||||
|
||||
#if defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TX12)
|
||||
#if defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TX12) || defined(RADIO_T8)
|
||||
#define TELEMETRY_EXTI_REUSE_INTERRUPT_ROTARY_ENCODER
|
||||
#elif defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019)
|
||||
#define TELEMETRY_EXTI_IRQHandler EXTI9_5_IRQHandler
|
||||
|
@ -1477,7 +1566,9 @@
|
|||
|
||||
// Heartbeat for iXJT / ISRM synchro
|
||||
#define INTMODULE_HEARTBEAT_TRIGGER EXTI_Trigger_Falling
|
||||
#if defined(PCBXLITE)
|
||||
#if !defined(HARDWARE_EXTERNAL_MODULE)
|
||||
// No heartbeat
|
||||
#elif defined(PCBXLITE)
|
||||
#define INTMODULE_HEARTBEAT
|
||||
#define INTMODULE_HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD
|
||||
#define INTMODULE_HEARTBEAT_GPIO GPIOD
|
||||
|
@ -1577,8 +1668,10 @@
|
|||
#define TRAINER_MODULE_SBUS_DMA_STREAM EXTMODULE_USART_RX_DMA_STREAM
|
||||
#define TRAINER_MODULE_SBUS_DMA_CHANNEL EXTMODULE_USART_RX_DMA_CHANNEL
|
||||
#else
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
#define TRAINER_MODULE_CPPM
|
||||
#define TRAINER_MODULE_SBUS
|
||||
#endif
|
||||
#define TRAINER_MODULE_RCC_AHB1Periph RCC_AHB1Periph_GPIOC
|
||||
#define TRAINER_MODULE_RCC_APB2Periph RCC_APB2Periph_USART6
|
||||
#define TRAINER_MODULE_RCC_APB1Periph RCC_APB1Periph_TIM3
|
||||
|
@ -1665,6 +1758,10 @@
|
|||
#define BACKLIGHT_CCMR1 TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 // Channel 1, PWM
|
||||
#define BACKLIGHT_CCER TIM_CCER_CC1E
|
||||
#define BACKLIGHT_COUNTER_REGISTER BACKLIGHT_TIMER->CCR1
|
||||
#elif defined(RADIO_T8)
|
||||
#define BACKLIGHT_RCC_AHB1Periph 0
|
||||
#define BACKLIGHT_RCC_APB1Periph 0
|
||||
#define BACKLIGHT_RCC_APB2Periph 0
|
||||
#elif defined(PCBX7)
|
||||
#define BACKLIGHT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD
|
||||
#define BACKLIGHT_RCC_APB1Periph RCC_APB1Periph_TIM4
|
||||
|
@ -1692,7 +1789,7 @@
|
|||
#define KEYS_BACKLIGHT_RCC_AHB1Periph 0
|
||||
|
||||
// LCD driver
|
||||
#if defined(RADIO_TX12) || defined(RADIO_T12)
|
||||
#if defined(RADIO_TX12) || defined(RADIO_T12) || defined(RADIO_T8)
|
||||
#define LCD_VERTICAL_INVERT
|
||||
#endif
|
||||
#if defined(PCBX9E)
|
||||
|
@ -1887,7 +1984,7 @@
|
|||
#define AUDIO_SPEAKER_ENABLE_GPIO_PIN GPIO_Pin_14 // PD.14
|
||||
#define HEADPHONE_TRAINER_SWITCH_GPIO GPIOD
|
||||
#define HEADPHONE_TRAINER_SWITCH_GPIO_PIN GPIO_Pin_9 // PD.09
|
||||
#elif defined(RADIO_TX12)
|
||||
#elif defined(RADIO_TX12) || defined(RADIO_T8)
|
||||
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
|
||||
#define AUDIO_MUTE_GPIO GPIOE
|
||||
#define AUDIO_MUTE_GPIO_PIN GPIO_Pin_12 // PE.12
|
||||
|
@ -2013,7 +2110,7 @@
|
|||
#define BT_USART_IRQn USART3_IRQn
|
||||
// #define BT_DMA_Stream_RX DMA1_Stream1
|
||||
// #define BT_DMA_Channel_RX DMA_Channel_4
|
||||
#elif defined(PCBX9D) || defined(PCBX9DP) || defined(RADIO_T12) || defined(RADIO_TX12)
|
||||
#elif defined(PCBX9D) || defined(PCBX9DP) || defined(RADIO_T12) || defined(RADIO_TX12) | defined(RADIO_T8)
|
||||
#define STORAGE_BLUETOOTH
|
||||
#define BT_RCC_AHB1Periph 0
|
||||
#define BT_RCC_APB1Periph 0
|
||||
|
|
|
@ -88,6 +88,10 @@ uint32_t readKeys()
|
|||
result |= 1 << KEY_SHIFT;
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIO_PIN_BIND)
|
||||
if (~KEYS_GPIO_REG_BIND & KEYS_GPIO_PIN_BIND)
|
||||
result |= 1 << KEY_BIND;
|
||||
#endif
|
||||
// if (result != 0) TRACE("readKeys(): result=0x%02x", result);
|
||||
|
||||
return result;
|
||||
|
@ -200,7 +204,8 @@ uint32_t switchState(uint8_t index)
|
|||
uint32_t xxx = 0;
|
||||
|
||||
switch (index) {
|
||||
#if defined(RADIO_TX12)
|
||||
|
||||
#if defined(RADIO_TX12) || defined(RADIO_T8)
|
||||
ADD_2POS_CASE(A);
|
||||
ADD_3POS_CASE(B, 1);
|
||||
ADD_3POS_CASE(C, 2);
|
||||
|
@ -235,6 +240,8 @@ uint32_t switchState(uint8_t index)
|
|||
ADD_2POS_CASE(D);
|
||||
ADD_3POS_CASE(E, 4);
|
||||
ADD_3POS_CASE(F, 5);
|
||||
#elif defined(RADIO_T8)
|
||||
ADD_2POS_CASE(D);
|
||||
#elif defined(PCBX7)
|
||||
ADD_3POS_CASE(D, 3);
|
||||
ADD_2POS_CASE(F);
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include "opentx.h"
|
||||
|
||||
#if defined(RADIO_T12) || defined(RADIO_TX12)
|
||||
#if defined(RADIO_T12) || defined(RADIO_TX12) || defined(RADIO_T8)
|
||||
#define LCD_CONTRAST_OFFSET -10
|
||||
#else
|
||||
#define LCD_CONTRAST_OFFSET 160
|
||||
|
|
|
@ -33,5 +33,9 @@ void usbChargerInit()
|
|||
|
||||
bool usbChargerLed()
|
||||
{
|
||||
#if defined(SIMU)
|
||||
return true;
|
||||
#else
|
||||
return (GPIO_ReadInputDataBit(USB_CHARGER_GPIO, USB_CHARGER_GPIO_PIN) == Bit_RESET && usbPlugged());
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -294,6 +294,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Mínus"
|
||||
|
|
|
@ -300,6 +300,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
|
|
|
@ -300,6 +300,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
|
|
|
@ -297,6 +297,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
|
|
|
@ -318,6 +318,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
|
|
|
@ -320,6 +320,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Moins"
|
||||
|
|
|
@ -321,6 +321,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
|
|
|
@ -298,6 +298,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
|
|
|
@ -318,6 +318,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
|
|
|
@ -311,6 +311,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
|
|
|
@ -312,6 +312,9 @@
|
|||
#elif defined(RADIO_TX12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||
#elif defined(RADIO_T8)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "RTN\0 ""ENTER""PGUP\0""PGDN\0""SYS\0 ""MDL\0 ""UP\0 ""DOWN\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
|
|
|
@ -148,6 +148,11 @@ def main():
|
|||
cmake_options["PCBREV"] = "TX12"
|
||||
firmware_options = options_radiomaster_tx12
|
||||
maxsize = 65536 * 8
|
||||
elif board_name == "t8":
|
||||
cmake_options["PCB"] = "X7"
|
||||
cmake_options["PCBREV"] = "T8"
|
||||
firmware_options = options_radiomaster_t8
|
||||
maxsize = 65536 * 8
|
||||
elif board_name == "t16":
|
||||
cmake_options["PCB"] = "X10"
|
||||
cmake_options["PCBREV"] = "T16"
|
||||
|
|
|
@ -258,6 +258,17 @@ options_radiomaster_tx12 = {
|
|||
"afhds3": ("AFHDS3", "YES", "NO")
|
||||
}
|
||||
|
||||
options_radiomaster_t8 = {
|
||||
"noheli": ("HELI", "NO", "YES"),
|
||||
"ppmus": ("PPM_UNIT", "US", "PERCENT_PREC1"),
|
||||
"lua": ("LUA", "YES", "NO_MODEL_SCRIPTS"),
|
||||
"nogvars": ("GVARS", "NO", "YES"),
|
||||
"faimode": ("FAI", "YES", None),
|
||||
"faichoice": ("FAI", "CHOICE", None),
|
||||
"nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
|
||||
"bindkey": ("BIND_KEY", "NO", "YES"),
|
||||
}
|
||||
|
||||
options_radiomaster_tx16s = {
|
||||
"noheli": ("HELI", "NO", "YES"),
|
||||
"ppmus": ("PPM_UNIT", "US", "PERCENT_PREC1"),
|
||||
|
|
|
@ -28,6 +28,18 @@ boards = {
|
|||
"PCB": "X7",
|
||||
"PCBREV": "TX12",
|
||||
"DEFAULT_MODE": "2",
|
||||
},
|
||||
"T8_1": {
|
||||
"PCB": "X7",
|
||||
"PCBREV": "T8",
|
||||
"DEFAULT_MODE": "1",
|
||||
"RADIOMASTER_RTF_RELEASE": "YES",
|
||||
},
|
||||
"T8_2": {
|
||||
"PCB": "X7",
|
||||
"PCBREV": "T8",
|
||||
"DEFAULT_MODE": "2",
|
||||
"RADIOMASTER_RTF_RELEASE": "YES",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -139,6 +139,15 @@ if [[ " TX12 X7 ALL " =~ \ ${FLAVOR}\ ]] ; then
|
|||
make -j"${CORES}" tests-radio
|
||||
fi
|
||||
|
||||
if [[ " T8 X7 ALL " =~ \ ${FLAVOR}\ ]] ; then
|
||||
# OpenTX on T8
|
||||
rm -rf ./*
|
||||
cmake "${COMMON_OPTIONS}" -DPCB=X7 -DPCBREV=TX12 -DHELI=YES -DGVARS=YES "${SRCDIR}"
|
||||
make -j"${CORES}" ${FIRMARE_TARGET}
|
||||
make -j"${CORES}" libsimulator
|
||||
make -j"${CORES}" tests-radio
|
||||
fi
|
||||
|
||||
if [[ " XLITE ALL " =~ \ ${FLAVOR}\ ]] ; then
|
||||
# OpenTX on X-Lite
|
||||
rm -rf ./*
|
||||
|
|