Add Jumper t12 support by 3djc (#6451)
* Jumper T12 - companion part * more work * Add definitions * fix libsimulator key handling * Fix simu keys handling * Cosmetics * Continued * Fix wrong regplace * Fix wrong regplace * Please travis * Please travis * Add T12 to Travis Switch naming and display * Cosmetics * Work on modules * Work on modules * typo * Fix navigation * Cosmetics * Introduce NAVIGATION_type * Fix * Make NAVIGATION_type more future proof * Lots of cleanups and improvements * Cosmetics * Fix internal module menu * Cosmetics * Fix screen reversed * Small fixes * Fix navigation issue * Please travis * Fix LCD contrast * Fix T12 switch layout * Fix T12 keys screen and all radios keys translations * Complete rework of SWITCHES screen for all radios * comsetics * VC++ compilation
|
@ -25,6 +25,7 @@ env:
|
|||
# - FLAVOR=9XRPRO
|
||||
- FLAVOR=X9LITE
|
||||
- FLAVOR=X7
|
||||
- FLAVOR=T12
|
||||
- FLAVOR=XLITE
|
||||
- FLAVOR=XLITES
|
||||
- FLAVOR=X9
|
||||
|
|
|
@ -333,7 +333,11 @@ file(GLOB simulator_plugins "${CMAKE_BINARY_DIR}/Release/*opentx-*simulator${CMA
|
|||
|
||||
# the current flavour is not automatically added if build in the current cmake iteration, so always
|
||||
# add its library name to be sure
|
||||
string(TOLOWER ${PCB} FLAVOUR)
|
||||
if(PCB STREQUAL X7 AND PCBREV STREQUAL T12)
|
||||
set(FLAVOUR t12)
|
||||
else()
|
||||
string(TOLOWER ${PCB} FLAVOUR)
|
||||
endif()
|
||||
if(POLICY CMP0026)
|
||||
cmake_policy(SET CMP0026 OLD) # https://cmake.org/cmake/help/v3.0/policy/CMP0026.html
|
||||
endif()
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<file>images/simulator/X10/left_rtn.png</file>
|
||||
<file>images/simulator/X10/left_sys.png</file>
|
||||
<file>images/simulator/X10/left_tele.png</file>
|
||||
<file>images/simulator/X10/right_ent.png</file>
|
||||
<file>images/simulator/X10/right_ent.png</file>
|
||||
<file>images/simulator/9X/9xdb.png</file>
|
||||
<file>images/simulator/9X/9xdl.png</file>
|
||||
<file>images/simulator/9X/9xdr.png</file>
|
||||
|
@ -157,15 +157,28 @@
|
|||
<file>images/simulator/XLITE/right_left.png</file>
|
||||
<file>images/simulator/XLITE/right_up.png</file>
|
||||
<file>images/simulator/XLITE/right_down.png</file>
|
||||
<file>images/simulator/JumperT12/right_up.png</file>
|
||||
<file>images/simulator/JumperT12/right_down.png</file>
|
||||
<file>images/simulator/JumperT12/right_right.png</file>
|
||||
<file>images/simulator/JumperT12/right_left.png</file>
|
||||
<file>images/simulator/JumperT12/left_ent.png</file>
|
||||
<file>images/simulator/JumperT12/left_exit.png</file>
|
||||
<file>images/simulator/JumperT12/JumperT12.png</file>
|
||||
<file>images/simulator/JumperT12/JumperT12-208.png</file>
|
||||
<file>images/simulator/JumperT12/JumperT12-left.png</file>
|
||||
<file>images/simulator/JumperT12/JumperT12-right.png</file>
|
||||
<file>images/simulator/JumperT12/JumperT12-x.png</file>
|
||||
<file>images/simulator/JumperT12/JumperT12-center.png</file>
|
||||
<file>images/simulator/JumperT12/JumperT12-top.png</file>
|
||||
<file>images/wizard/ailerons.png</file>
|
||||
<file>images/wizard/airbrakes.png</file>
|
||||
<file>images/wizard/elevons.png</file>
|
||||
<file>images/wizard/elevons.png</file>
|
||||
<file>images/wizard/conclusion.png</file>
|
||||
<file>images/wizard/cyclic.png</file>
|
||||
<file>images/wizard/fblheli.png</file>
|
||||
<file>images/wizard/flaps.png</file>
|
||||
<file>images/wizard/flybar.png</file>
|
||||
<file>images/wizard/gyro.png</file>
|
||||
<file>images/wizard/gyro.png</file>
|
||||
<file>images/wizard/helictrl.png</file>
|
||||
<file>images/wizard/models.png</file>
|
||||
<file>images/wizard/multirotor.png</file>
|
||||
|
@ -1136,6 +1149,6 @@
|
|||
<file>themes/yerico/48/contributors.png</file>
|
||||
<file>themes/yerico/48/stop.png</file>
|
||||
<file>themes/yerico/48/write_eeprom.png</file>
|
||||
<file>themes/yerico/48/sdsync.png</file>
|
||||
<file>themes/yerico/48/sdsync.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -83,6 +83,8 @@ uint32_t Boards::getFourCC(Type board)
|
|||
case BOARD_STOCK:
|
||||
case BOARD_M128:
|
||||
return 0;
|
||||
case BOARD_JUMPER_T12:
|
||||
return 0x3D78746F;
|
||||
case BOARD_UNKNOWN:
|
||||
break;
|
||||
}
|
||||
|
@ -112,6 +114,7 @@ const int Boards::getEEpromSize(Board::Type board)
|
|||
case BOARD_TARANIS_X9D:
|
||||
case BOARD_TARANIS_X9DP:
|
||||
case BOARD_TARANIS_X9E:
|
||||
case BOARD_JUMPER_T12:
|
||||
return EESIZE_TARANIS;
|
||||
case BOARD_UNKNOWN:
|
||||
return EESIZE_MAX;
|
||||
|
@ -221,6 +224,18 @@ const SwitchInfo Boards::getSwitchInfo(Board::Type board, int index)
|
|||
if (index < DIM(switches))
|
||||
return switches[index];
|
||||
}
|
||||
else if (IS_JUMPER_T12(board)) {
|
||||
const Board::SwitchInfo switches[] = {
|
||||
{SWITCH_3POS, "SA"},
|
||||
{SWITCH_3POS, "SB"},
|
||||
{SWITCH_3POS, "SC"},
|
||||
{SWITCH_3POS, "SD"},
|
||||
{SWITCH_2POS, "SG"},
|
||||
{SWITCH_2POS, "SH"}
|
||||
};
|
||||
if (index < DIM(switches))
|
||||
return switches[index];
|
||||
}
|
||||
else {
|
||||
const Board::SwitchInfo switches[] = {
|
||||
{SWITCH_3POS, "3POS"},
|
||||
|
@ -247,7 +262,7 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability)
|
|||
case Pots:
|
||||
if (IS_TARANIS_X9LITE(board))
|
||||
return 1;
|
||||
else if (IS_TARANIS_SMALL(board))
|
||||
else if (IS_TARANIS_SMALL(board) || IS_JUMPER_T12(board))
|
||||
return 2;
|
||||
else if (IS_TARANIS_X9E(board))
|
||||
return 4;
|
||||
|
@ -302,6 +317,8 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability)
|
|||
return 4;
|
||||
else if (IS_HORUS_OR_TARANIS(board))
|
||||
return 8;
|
||||
else if (IS_JUMPER_T12(board))
|
||||
return 6;
|
||||
else
|
||||
return 7;
|
||||
|
||||
|
|
|
@ -47,7 +47,8 @@ namespace Board {
|
|||
BOARD_X10,
|
||||
BOARD_TARANIS_XLITE,
|
||||
BOARD_TARANIS_XLITES,
|
||||
BOARD_TARANIS_X9LITE
|
||||
BOARD_TARANIS_X9LITE,
|
||||
BOARD_JUMPER_T12
|
||||
};
|
||||
|
||||
constexpr int BOARD_TYPE_MAX = BOARD_TARANIS_X9LITE ;
|
||||
|
@ -190,6 +191,7 @@ class Boards
|
|||
#define IS_2560(board) (board==Board::BOARD_GRUVIN9X || board==Board::BOARD_MEGA2560)
|
||||
#define IS_SKY9X(board) (board==Board::BOARD_SKY9X || board==Board::BOARD_9XRPRO || board==Board::BOARD_AR9X)
|
||||
#define IS_9XRPRO(board) (board==Board::BOARD_9XRPRO)
|
||||
#define IS_JUMPER_T12(board) (board==Board::BOARD_JUMPER_T12)
|
||||
#define IS_TARANIS_XLITE(board) (board==Board::BOARD_TARANIS_XLITE || board==Board::BOARD_TARANIS_XLITES)
|
||||
#define IS_TARANIS_XLITES(board) (board==Board::BOARD_TARANIS_XLITES)
|
||||
#define IS_TARANIS_X7(board) (board==Board::BOARD_TARANIS_X7)
|
||||
|
|
|
@ -90,7 +90,7 @@ GeneralSettings::GeneralSettings()
|
|||
// Lipo 2S
|
||||
vBatWarn = 66;
|
||||
vBatMin = -23; // 6.7V
|
||||
vBatMax = -37; // 8.3V
|
||||
vBatMax = -37; // 8.3V
|
||||
}
|
||||
else if (IS_TARANIS(board)) {
|
||||
// NI-MH 7.2V, X9D, X9D+ and X7
|
||||
|
@ -249,6 +249,10 @@ void GeneralSettings::setDefaultControlTypes(Board::Type board)
|
|||
potConfig[0] = Board::POT_WITH_DETENT;
|
||||
potConfig[1] = Board::POT_WITH_DETENT;
|
||||
}
|
||||
else if (IS_JUMPER_T12(board)) {
|
||||
potConfig[0] = Board::POT_WITH_DETENT;
|
||||
potConfig[1] = Board::POT_WITH_DETENT;
|
||||
}
|
||||
else {
|
||||
potConfig[0] = Board::POT_WITHOUT_DETENT;
|
||||
potConfig[1] = Board::POT_WITHOUT_DETENT;
|
||||
|
@ -317,6 +321,20 @@ void GeneralSettings::convert(RadioDataConversionState & cstate)
|
|||
}
|
||||
}
|
||||
|
||||
if (IS_JUMPER_T12(cstate.toType)) {
|
||||
if (IS_TARANIS_X9(cstate.fromType) || IS_HORUS(cstate.fromType)) {
|
||||
strncpy(switchName[4], switchName[5], sizeof(switchName[0]));
|
||||
strncpy(switchName[5], switchName[7], sizeof(switchName[0]));
|
||||
}
|
||||
}
|
||||
|
||||
else if (IS_JUMPER_T12(cstate.fromType)) {
|
||||
if (IS_TARANIS_X9(cstate.toType) || IS_HORUS(cstate.toType)) {
|
||||
strncpy(switchName[5], switchName[4], sizeof(switchName[0]));
|
||||
strncpy(switchName[7], switchName[5], sizeof(switchName[0]));
|
||||
}
|
||||
}
|
||||
|
||||
// LS and RS sliders are after 2 aux sliders on X12 and X9E
|
||||
if ((IS_HORUS_X12S(cstate.toType) || IS_TARANIS_X9E(cstate.toType)) && !IS_HORUS_X12S(cstate.fromType) && !IS_TARANIS_X9E(cstate.fromType)) {
|
||||
strncpy(sliderName[0], sliderName[2], sizeof(sliderName[0]));
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#define TARANIS_XLITE_VARIANT 0x2000
|
||||
#define TARANIS_XLITES_VARIANT 0x1000
|
||||
#define TARANIS_X9LITE_VARIANT 0x0800
|
||||
#define JUMPER_T12_VARIANT TARANIS_X7_VARIANT
|
||||
|
||||
#define SIMU_STOCK_VARIANTS (GVARS_VARIANT|FRSKY_VARIANT)
|
||||
#define SIMU_M128_VARIANTS (M128_VARIANT|SIMU_STOCK_VARIANTS)
|
||||
|
|
|
@ -66,6 +66,8 @@ const char * OpenTxEepromInterface::getName()
|
|||
return "OpenTX for MEGA2560 board";
|
||||
case BOARD_GRUVIN9X:
|
||||
return "OpenTX for Gruvin9x board / 9X";
|
||||
case BOARD_JUMPER_T12:
|
||||
return "OpenTX for Jumper T12";
|
||||
case BOARD_TARANIS_X9D:
|
||||
return "OpenTX for FrSky Taranis X9D";
|
||||
case BOARD_TARANIS_X9DP:
|
||||
|
@ -331,6 +333,9 @@ int OpenTxEepromInterface::save(uint8_t * eeprom, const RadioData & radioData, u
|
|||
else if (IS_TARANIS_XLITE(board)) {
|
||||
variant |= TARANIS_XLITE_VARIANT;
|
||||
}
|
||||
else if (IS_JUMPER_T12(board)) {
|
||||
variant |= JUMPER_T12_VARIANT;
|
||||
}
|
||||
|
||||
OpenTxGeneralData generator((GeneralSettings &)radioData.generalSettings, board, version, variant);
|
||||
// generator.dump();
|
||||
|
@ -543,7 +548,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
|||
case SoundPitch:
|
||||
return 1;
|
||||
case Haptic:
|
||||
return (IS_2560(board) || IS_SKY9X(board) || IS_TARANIS_PLUS(board) || IS_TARANIS_SMALL(board) || IS_TARANIS_X9E(board) || IS_HORUS(board) || id.contains("haptic"));
|
||||
return (IS_2560(board) || IS_SKY9X(board) || IS_TARANIS_PLUS(board) || IS_TARANIS_SMALL(board) || IS_TARANIS_X9E(board) || IS_HORUS(board) || IS_JUMPER_T12(board) || id.contains("haptic"));
|
||||
case ModelTrainerEnable:
|
||||
if (IS_HORUS_OR_TARANIS(board))
|
||||
return 1;
|
||||
|
@ -552,7 +557,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
|||
case MaxVolume:
|
||||
return (IS_ARM(board) ? 23 : 7);
|
||||
case MaxContrast:
|
||||
if (IS_TARANIS_SMALL(board))
|
||||
if (IS_TARANIS_SMALL(board) || IS_JUMPER_T12(board))
|
||||
return 30;
|
||||
else
|
||||
return 45;
|
||||
|
@ -644,7 +649,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
|||
case LcdWidth:
|
||||
if (IS_HORUS(board))
|
||||
return 480;
|
||||
else if (IS_TARANIS_SMALL(board))
|
||||
else if (IS_TARANIS_SMALL(board) || IS_JUMPER_T12(board))
|
||||
return 128;
|
||||
else if (IS_TARANIS(board))
|
||||
return 212;
|
||||
|
@ -658,7 +663,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
|||
case LcdDepth:
|
||||
if (IS_HORUS(board))
|
||||
return 16;
|
||||
else if (IS_TARANIS_SMALL(board))
|
||||
else if (IS_TARANIS_SMALL(board) || IS_JUMPER_T12(board))
|
||||
return 1;
|
||||
else if (IS_TARANIS(board))
|
||||
return 4;
|
||||
|
@ -708,6 +713,8 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
|||
return TARANIS_XLITES_VARIANT;
|
||||
else if (IS_TARANIS_XLITE(board))
|
||||
return TARANIS_XLITE_VARIANT;
|
||||
else if (IS_JUMPER_T12(board))
|
||||
return JUMPER_T12_VARIANT;
|
||||
else
|
||||
return 0;
|
||||
case MavlinkTelemetry:
|
||||
|
@ -973,6 +980,11 @@ bool OpenTxEepromInterface::checkVariant(unsigned int version, unsigned int vari
|
|||
variantError = true;
|
||||
}
|
||||
}
|
||||
else if (IS_JUMPER_T12(board)) {
|
||||
if (variant != JUMPER_T12_VARIANT) {
|
||||
variantError = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (variantError) {
|
||||
qWarning() << " wrong variant (" << variant << ")";
|
||||
|
@ -1242,6 +1254,17 @@ void registerOpenTxFirmwares()
|
|||
firmware->addOption("pcbdev", Firmware::tr("Use ONLY with first DEV pcb version"));
|
||||
registerOpenTxFirmware(firmware);
|
||||
|
||||
/* Jumper T12 board */
|
||||
firmware = new OpenTxFirmware("opentx-t12", QCoreApplication::translate("Firmware", "Jumper T12"), BOARD_JUMPER_T12);
|
||||
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"));
|
||||
firmware->addOption("luac", Firmware::tr("Enable Lua compiler"));
|
||||
firmware->addOption("crossfire", Firmware::tr("Support for Crossfire TX Module"));
|
||||
addOpenTxFontOptions(firmware);
|
||||
registerOpenTxFirmware(firmware);
|
||||
|
||||
/* 9XR-Pro */
|
||||
firmware = new OpenTxFirmware("opentx-9xrpro", Firmware::tr("Turnigy 9XR-PRO"), BOARD_9XRPRO);
|
||||
addOpenTxArm9xOptions(firmware, false);
|
||||
|
|
|
@ -615,6 +615,19 @@ RawSource RawSource::convert(RadioDataConversionState & cstate)
|
|||
index = 5; // SH to SH
|
||||
}
|
||||
}
|
||||
else if (IS_JUMPER_T12(cstate.toType) && (IS_TARANIS_X9(cstate.fromType) || IS_HORUS(cstate.fromType))) {
|
||||
// No SE and SG on T12 board
|
||||
if (index == 4 || index == 6) {
|
||||
index = 3; // SG and SE to SD
|
||||
evt = RadioDataConversionState::EVT_CVRT;
|
||||
}
|
||||
else if (index == 5) {
|
||||
index = 4; // SF to SF
|
||||
}
|
||||
else if (index == 7) {
|
||||
index = 5; // SH to SH
|
||||
}
|
||||
}
|
||||
// Compensate for SE and SG on X9/Horus board if converting from X7
|
||||
else if ((IS_TARANIS_X9(cstate.toType) || IS_HORUS(cstate.toType)) && IS_TARANIS_X7(cstate.fromType)) {
|
||||
if (index == 4) {
|
||||
|
@ -624,6 +637,22 @@ RawSource RawSource::convert(RadioDataConversionState & cstate)
|
|||
index = 7; // SH to SH
|
||||
}
|
||||
}
|
||||
else if ((IS_TARANIS_X9(cstate.toType) || IS_HORUS(cstate.toType)) && IS_JUMPER_T12(cstate.fromType)) {
|
||||
if (index == 4) {
|
||||
index = 5; // SF to SF
|
||||
}
|
||||
else if (index == 5) {
|
||||
index = 7; // SH to SH
|
||||
}
|
||||
}
|
||||
else if ((IS_TARANIS_X9(cstate.toType) || IS_HORUS(cstate.toType)) && IS_JUMPER_T12(cstate.fromType)) {
|
||||
if (index == 4) {
|
||||
index = 5; // SF to SF
|
||||
}
|
||||
else if (index == 5) {
|
||||
index = 7; // SH to SH
|
||||
}
|
||||
}
|
||||
} // SOURCE_TYPE_SWITCH
|
||||
|
||||
// final validation (we do not pass model to isAvailable() because we don't know what has or hasn't been converted)
|
||||
|
|
|
@ -208,6 +208,20 @@ RawSwitch RawSwitch::convert(RadioDataConversionState & cstate)
|
|||
delta = 6; // SH to SH
|
||||
}
|
||||
}
|
||||
else if (IS_JUMPER_T12(cstate.toType) && (IS_TARANIS_X9(cstate.fromType) || IS_HORUS(cstate.fromType))) {
|
||||
if (srcIdx == 4 || srcIdx == 5) {
|
||||
delta = 3; // SE to SD & SF to SF
|
||||
if (srcIdx == 4)
|
||||
evt = RadioDataConversionState::EVT_CVRT;
|
||||
}
|
||||
else if (srcIdx == 6) {
|
||||
delta = 9; // SG to SD
|
||||
evt = RadioDataConversionState::EVT_CVRT;
|
||||
}
|
||||
else if (srcIdx == 7) {
|
||||
delta = 6; // SH to SH
|
||||
}
|
||||
}
|
||||
// Compensate for SE and SG on X9/Horus board if converting from X7
|
||||
else if ((IS_TARANIS_X9(cstate.toType) || IS_HORUS(cstate.toType)) && IS_TARANIS_X7(cstate.fromType)) {
|
||||
if (srcIdx == 4) {
|
||||
|
@ -217,6 +231,14 @@ RawSwitch RawSwitch::convert(RadioDataConversionState & cstate)
|
|||
delta = -6; // SH to SH
|
||||
}
|
||||
}
|
||||
else if ((IS_TARANIS_X9(cstate.toType) || IS_HORUS(cstate.toType)) && IS_JUMPER_T12(cstate.fromType)) {
|
||||
if (srcIdx == 4) {
|
||||
delta = -3; // SF to SF
|
||||
}
|
||||
else if (srcIdx == 5) {
|
||||
delta = -6; // SH to SH
|
||||
}
|
||||
}
|
||||
|
||||
if (index < 0) {
|
||||
delta = -delta; // invert for !switch
|
||||
|
|
|
@ -41,6 +41,14 @@ void HardwarePanel::setupSwitchType(int index, QLabel * label, AutoLineEdit * na
|
|||
label->setText("SH");
|
||||
}
|
||||
}
|
||||
if (IS_JUMPER_T12(board)) {
|
||||
if (index == 4) {
|
||||
label->setText("SG");
|
||||
}
|
||||
else if (index == 5) {
|
||||
label->setText("SH");
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
label->hide();
|
||||
|
@ -157,7 +165,7 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings
|
|||
ui->txCurrentCalibrationLabel->hide();
|
||||
}
|
||||
|
||||
if (IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board)|| IS_TARANIS_X9E(board) || IS_HORUS(board)) {
|
||||
if (IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board)|| IS_TARANIS_X9E(board) || IS_HORUS(board) || IS_JUMPER_T12(board)) {
|
||||
ui->bluetoothMode->addItem(tr("OFF"), 0);
|
||||
if (IS_TARANIS_X9E(board)) {
|
||||
ui->bluetoothMode->addItem(tr("Enabled"), 1);
|
||||
|
|
BIN
companion/src/images/simulator/JumperT12/JumperT12-208.png
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
companion/src/images/simulator/JumperT12/JumperT12-center.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
companion/src/images/simulator/JumperT12/JumperT12-left.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
companion/src/images/simulator/JumperT12/JumperT12-right.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
companion/src/images/simulator/JumperT12/JumperT12-top.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
companion/src/images/simulator/JumperT12/JumperT12-x.png
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
companion/src/images/simulator/JumperT12/JumperT12.png
Normal file
After Width: | Height: | Size: 502 KiB |
BIN
companion/src/images/simulator/JumperT12/left_ent.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
companion/src/images/simulator/JumperT12/left_exit.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
companion/src/images/simulator/JumperT12/left_page.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
companion/src/images/simulator/JumperT12/right_down.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
companion/src/images/simulator/JumperT12/right_left.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
companion/src/images/simulator/JumperT12/right_right.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
companion/src/images/simulator/JumperT12/right_up.png
Normal file
After Width: | Height: | Size: 30 KiB |
|
@ -11,6 +11,7 @@ set(simulation_SRCS
|
|||
simulateduiwidgetX9E.cpp
|
||||
simulateduiwidgetX10.cpp
|
||||
simulateduiwidgetX12.cpp
|
||||
simulateduiwidgetJumperT12.cpp
|
||||
simulatorinterface.cpp
|
||||
simulatormainwindow.cpp
|
||||
simulatorstartupdialog.cpp
|
||||
|
@ -32,6 +33,7 @@ set(simulation_UIS
|
|||
simulateduiwidgetX9E.ui
|
||||
simulateduiwidgetX10.ui
|
||||
simulateduiwidgetX12.ui
|
||||
simulateduiwidgetJumperT12.ui
|
||||
simulatormainwindow.ui
|
||||
simulatorstartupdialog.ui
|
||||
simulatorwidget.ui
|
||||
|
|
|
@ -111,6 +111,7 @@ namespace Ui {
|
|||
class SimulatedUIWidgetX9E;
|
||||
class SimulatedUIWidgetX10;
|
||||
class SimulatedUIWidgetX12;
|
||||
class SimulatedUIWidgetJumperT12;
|
||||
}
|
||||
|
||||
class SimulatedUIWidget9X: public SimulatedUIWidget
|
||||
|
@ -213,4 +214,16 @@ class SimulatedUIWidgetX12: public SimulatedUIWidget
|
|||
Ui::SimulatedUIWidgetX12 * ui;
|
||||
};
|
||||
|
||||
class SimulatedUIWidgetJumperT12: public SimulatedUIWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SimulatedUIWidgetJumperT12(SimulatorInterface * simulator, QWidget * parent = NULL);
|
||||
virtual ~SimulatedUIWidgetJumperT12();
|
||||
|
||||
private:
|
||||
Ui::SimulatedUIWidgetJumperT12 * ui;
|
||||
};
|
||||
|
||||
#endif // SIMULATEDUIWIDGET_H
|
||||
|
|
61
companion/src/simulation/simulateduiwidgetJumperT12.cpp
Normal file
|
@ -0,0 +1,61 @@
|
|||
#include "simulateduiwidget.h"
|
||||
#include "ui_simulateduiwidgetJumperT12.h"
|
||||
|
||||
// NOTE: RadioUiAction(NUMBER,...): NUMBER relates to enum EnumKeys in the specific board.h
|
||||
|
||||
SimulatedUIWidgetJumperT12::SimulatedUIWidgetJumperT12(SimulatorInterface *simulator, QWidget * parent):
|
||||
SimulatedUIWidget(simulator, parent),
|
||||
ui(new Ui::SimulatedUIWidgetJumperT12)
|
||||
{
|
||||
RadioUiAction * act;
|
||||
QPolygon polygon;
|
||||
|
||||
ui->setupUi(this);
|
||||
|
||||
act = new RadioUiAction(3, QList<int>() << Qt::Key_Up << Qt::Key_PageUp, SIMU_STR_HLP_KEYS_GO_UP, SIMU_STR_HLP_ACT_UP);
|
||||
addRadioWidget(ui->rightbuttons->addArea(QRect(69, 11, 60, 25), "JumperT12/right_up.png", act));
|
||||
|
||||
act = new RadioUiAction(2, QList<int>() << Qt::Key_Down << Qt::Key_PageDown, SIMU_STR_HLP_KEYS_GO_DN, SIMU_STR_HLP_ACT_DN);
|
||||
addRadioWidget(ui->rightbuttons->addArea(QRect(61, 115, 60, 25), "JumperT12/right_down.png", act));
|
||||
|
||||
act = new RadioUiAction(4, QList<int>() << Qt::Key_Right << Qt::Key_Plus, SIMU_STR_HLP_KEY_RGT % "|" % SIMU_STR_HLP_KEY_PLS, SIMU_STR_HLP_ACT_PLS);
|
||||
addRadioWidget(ui->rightbuttons->addArea(QRect(109, 53, 30, 40), "JumperT12/right_right.png", act));
|
||||
|
||||
act = new RadioUiAction(5, QList<int>() << Qt::Key_Left << Qt::Key_Minus, SIMU_STR_HLP_KEY_LFT % "|" % SIMU_STR_HLP_KEY_MIN, SIMU_STR_HLP_ACT_MIN);
|
||||
addRadioWidget(ui->rightbuttons->addArea(QRect(49, 62, 30, 40), "JumperT12/right_left.png", act));
|
||||
|
||||
m_mouseMidClickAction = new RadioUiAction(1, QList<int>() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ENT);
|
||||
addRadioWidget(ui->leftbuttons->addArea(QRect(21, 30, 60, 25), "JumperT12/left_ent.png", m_mouseMidClickAction));
|
||||
|
||||
act = new RadioUiAction(0, QList<int>() << Qt::Key_Delete << Qt::Key_Escape << Qt::Key_Backspace, SIMU_STR_HLP_KEYS_EXIT, SIMU_STR_HLP_ACT_EXIT);
|
||||
addRadioWidget(ui->leftbuttons->addArea(QRect(21, 80, 60, 60), "JumperT12/left_exit.png", act));
|
||||
|
||||
addRadioWidget(ui->leftbuttons->addArea(QRect(9, 154, 30, 30), "JumperT12/left_scrnshot.png", m_screenshotAction));
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
SimulatedUIWidgetJumperT12::~SimulatedUIWidgetJumperT12()
|
||||
{
|
||||
delete ui;
|
||||
}
|
258
companion/src/simulation/simulateduiwidgetJumperT12.ui
Normal file
|
@ -0,0 +1,258 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SimulatedUIWidgetJumperT12</class>
|
||||
<widget class="QWidget" name="SimulatedUIWidgetJumperT12">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>570</width>
|
||||
<height>208</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>570</width>
|
||||
<height>208</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>570</width>
|
||||
<height>208</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">Jumper T12 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="5" 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>
|
||||
<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="1" column="2" rowspan="4">
|
||||
<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>157</width>
|
||||
<height>186</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>157</width>
|
||||
<height>186</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background:url(:/images/simulator/JumperT12/JumperT12-right.png)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" rowspan="4">
|
||||
<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>157</width>
|
||||
<height>186</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>157</width>
|
||||
<height>186</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background:url(:/images/simulator/JumperT12/JumperT12-left.png);</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" 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>256</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>256</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background:url(:/images/simulator/JumperT12/bottom.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>256</width>
|
||||
<height>48</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>256</width>
|
||||
<height>48</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background:url(:/images/simulator/JumperT12/JumperT12-top.png)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" 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>256</width>
|
||||
<height>128</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>424</width>
|
||||
<height>128</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgb(215, 243, 255);</string>
|
||||
</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>
|
|
@ -91,6 +91,9 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato
|
|||
case Board::BOARD_X10:
|
||||
radioUiWidget = new SimulatedUIWidgetX10(simulator, this);
|
||||
break;
|
||||
case Board::BOARD_JUMPER_T12:
|
||||
radioUiWidget = new SimulatedUIWidgetJumperT12(simulator, this);
|
||||
break;
|
||||
default:
|
||||
radioUiWidget = new SimulatedUIWidget9X(simulator, this);
|
||||
break;
|
||||
|
|
|
@ -26,6 +26,7 @@ build:
|
|||
cd $(BUILDDIR); cmake $(COMMON_OPTIONS) $(STM32_OPTIONS) -DPCB=X9D+ ../ ; make libsimulator
|
||||
cd $(BUILDDIR); cmake $(COMMON_OPTIONS) $(STM32_OPTIONS) -DPCB=X9E ../ ; make libsimulator
|
||||
cd $(BUILDDIR); cmake $(COMMON_OPTIONS) $(STM32_OPTIONS) -DPCB=X12S ../ ; make libsimulator
|
||||
cd $(BUILDDIR); cmake $(COMMON_OPTIONS) $(STM32_OPTIONS) -DPCB=JUMPERT12 ../ ; make libsimulator
|
||||
|
||||
make -C $(BUILDDIR) companion22 simulator22
|
||||
|
||||
|
|
|
@ -180,24 +180,24 @@ enum BeeperMode {
|
|||
};
|
||||
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
enum ModuleIndex {
|
||||
INTERNAL_MODULE,
|
||||
EXTERNAL_MODULE,
|
||||
SPORT_MODULE,
|
||||
};
|
||||
enum TrainerMode {
|
||||
TRAINER_MODE_MASTER_TRAINER_JACK,
|
||||
TRAINER_MODE_SLAVE,
|
||||
enum ModuleIndex {
|
||||
INTERNAL_MODULE,
|
||||
EXTERNAL_MODULE,
|
||||
SPORT_MODULE,
|
||||
};
|
||||
enum TrainerMode {
|
||||
TRAINER_MODE_MASTER_TRAINER_JACK,
|
||||
TRAINER_MODE_SLAVE,
|
||||
#if defined(PCBTARANIS)
|
||||
TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE,
|
||||
TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE,
|
||||
TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE,
|
||||
TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE,
|
||||
#endif
|
||||
TRAINER_MODE_MASTER_BATTERY_COMPARTMENT,
|
||||
TRAINER_MODE_MASTER_BATTERY_COMPARTMENT,
|
||||
#if defined(BLUETOOTH)
|
||||
TRAINER_MODE_MASTER_BLUETOOTH,
|
||||
TRAINER_MODE_SLAVE_BLUETOOTH,
|
||||
TRAINER_MODE_MASTER_BLUETOOTH,
|
||||
TRAINER_MODE_SLAVE_BLUETOOTH,
|
||||
#endif
|
||||
};
|
||||
};
|
||||
#elif defined(PCBSKY9X)
|
||||
enum ModuleIndex {
|
||||
EXTERNAL_MODULE,
|
||||
|
@ -324,7 +324,7 @@ enum TelemetryUnit {
|
|||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
#define MAX_TELEM_SCRIPT_INPUTS 8
|
||||
#define MAX_TELEM_SCRIPT_INPUTS 8
|
||||
#endif
|
||||
|
||||
enum TelemetryScreenType {
|
||||
|
@ -657,9 +657,12 @@ enum MixSources {
|
|||
#if defined(PCBHORUS) || defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E) || defined(PCBX7)
|
||||
MIXSRC_SH, LUA_EXPORT("sh", "Switch H")
|
||||
#endif
|
||||
#if defined(PCBX7)
|
||||
#if defined(RADIO_X7)
|
||||
MIXSRC_SI, LUA_EXPORT("si", "Switch I")
|
||||
MIXSRC_SJ, LUA_EXPORT("sj", "Switch J")
|
||||
#elif defined(RADIO_T12) // keep switches for eeprom compatibity, but hide them
|
||||
MIXSRC_SI,
|
||||
MIXSRC_SJ,
|
||||
#endif
|
||||
#if defined(PCBX9E)
|
||||
MIXSRC_SI, LUA_EXPORT("si", "Switch I")
|
||||
|
@ -842,4 +845,4 @@ enum BluetoothModes {
|
|||
#define PXX2_LEN_RX_NAME 8
|
||||
#define PXX2_MAX_RECEIVERS_PER_MODULE 3
|
||||
|
||||
#endif // _DATACONSTANTS_H_
|
||||
#endif // _DATACONSTANTS_H_
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
#define MENUS_SCROLLBAR_WIDTH 0
|
||||
|
||||
#if defined(PCBX7) || defined(PCBX9LITE)
|
||||
#if defined(NAVIGATION_X7)
|
||||
#define HEADER_LINE 0
|
||||
#define HEADER_LINE_COLUMNS
|
||||
#else
|
||||
|
@ -156,7 +156,7 @@ void title(const char * s);
|
|||
|
||||
#define MENU_TAB(...) const uint8_t mstate_tab[] = __VA_ARGS__
|
||||
|
||||
#if defined(PCBX7) || defined(PCBX9LITE)
|
||||
#if defined(NAVIGATION_X7)
|
||||
#define MENU_CHECK(tab, menu, lines_count) \
|
||||
check(event, menu, tab, DIM(tab), mstate_tab, DIM(mstate_tab)-1, lines_count)
|
||||
#else
|
||||
|
@ -169,7 +169,7 @@ void title(const char * s);
|
|||
MENU_CHECK(tab, menu, lines_count); \
|
||||
TITLE(title)
|
||||
|
||||
#if defined(PCBX7) || defined(PCBX9LITE)
|
||||
#if defined(NAVIGATION_X7)
|
||||
#define SIMPLE_MENU_NOTITLE(tab, menu, lines_count) \
|
||||
check_simple(event, menu, tab, DIM(tab), lines_count);
|
||||
#define SUBMENU_NOTITLE(lines_count, ...) \
|
||||
|
|
|
@ -76,10 +76,9 @@ void menuModelSelect(event_t event)
|
|||
event = EVT_ENTRY_UP;
|
||||
}
|
||||
|
||||
event_t _event_ = (IS_ROTARY_BREAK(event) || IS_ROTARY_LONG(event) ? 0 : event);
|
||||
|
||||
if ((s_copyMode && EVT_KEY_MASK(event) == KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT)) {
|
||||
_event_ -= KEY_EXIT;
|
||||
event_t _event_ = event;
|
||||
if ((s_copyMode && EVT_KEY_MASK(event) == KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT) || IS_ROTARY_BREAK(event) || IS_ROTARY_LONG(event)) {
|
||||
_event_ = 0;
|
||||
}
|
||||
|
||||
int8_t oldSub = menuVerticalPosition;
|
||||
|
@ -198,7 +197,7 @@ void menuModelSelect(event_t event)
|
|||
}
|
||||
break;
|
||||
|
||||
#if defined(PCBX7) || defined(PCBX9LITE)
|
||||
#if defined(NAVIGATION_X7)
|
||||
case EVT_KEY_LONG(KEY_PAGE):
|
||||
chainMenu(menuTabModel[DIM(menuTabModel)-1]);
|
||||
killEvents(event);
|
||||
|
@ -230,7 +229,7 @@ void menuModelSelect(event_t event)
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(PCBX7) || defined(PCBX9LITE)
|
||||
#if defined(NAVIGATION_X7)
|
||||
case EVT_ROTARY_LEFT:
|
||||
case EVT_ROTARY_RIGHT:
|
||||
#endif
|
||||
|
@ -271,7 +270,7 @@ void menuModelSelect(event_t event)
|
|||
lcdDrawNumber(17*FW, 0, reusableBuffer.modelsel.eepromfree, RIGHT);
|
||||
#endif
|
||||
|
||||
#if defined(PCBX7) || defined(PCBX9LITE)
|
||||
#if defined(NAVIGATION_X7)
|
||||
drawScreenIndex(MENU_MODEL_SELECT, DIM(menuTabModel), 0);
|
||||
#elif defined(ROTARY_ENCODER_NAVIGATION)
|
||||
drawScreenIndex(MENU_MODEL_SELECT, DIM(menuTabModel), (sub == g_eeGeneral.currModel) ? ((IS_ROTARY_ENCODER_NAVIGATION_ENABLE() && s_editMode < 0) ? INVERS|BLINK : INVERS) : 0);
|
||||
|
|
|
@ -77,7 +77,7 @@ enum MenuModelSetupItems {
|
|||
ITEM_MODEL_SETUP_BEEP_CENTER,
|
||||
ITEM_MODEL_SETUP_USE_GLOBAL_FUNCTIONS,
|
||||
ITEM_MODEL_SETUP_REGISTRATION_ID,
|
||||
#if defined(PCBTARANIS)
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL,
|
||||
ITEM_MODEL_SETUP_INTERNAL_MODULE_MODE,
|
||||
ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS,
|
||||
|
@ -154,13 +154,14 @@ enum MenuModelSetupItems {
|
|||
#define IF_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? (uint8_t)(xxx) : HIDDEN_ROW)
|
||||
#define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx))
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
#if defined(HARDWARE_INTERNAL_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)
|
||||
#else
|
||||
#define CURRENT_MODULE_EDITED(k) (EXTERNAL_MODULE)
|
||||
#define CURRENT_RECEIVER_EDITED(k) (k - ITEM_MODEL_SETUP_EXTERNAL_MODULE_PXX2_RECEIVER_1)
|
||||
#endif
|
||||
|
||||
#if defined(PCBXLITE)
|
||||
|
@ -511,6 +512,24 @@ void onBluetoothConnectMenu(const char * result)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
#define INTERNAL_MODULE_ROWS \
|
||||
LABEL(InternalModule), \
|
||||
INTERNAL_MODULE_MODE_ROWS, \
|
||||
INTERNAL_MODULE_CHANNELS_ROWS, \
|
||||
IF_NOT_PXX2_MODULE(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1)), \
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 0), \
|
||||
ANTENNA_ROW \
|
||||
IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), \
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 1), \
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 0), \
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 0), \
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 0), \
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 0),
|
||||
#else
|
||||
#define INTERNAL_MODULE_ROWS
|
||||
#endif
|
||||
|
||||
void menuModelSetup(event_t event)
|
||||
{
|
||||
#if defined(EXTERNAL_ANTENNA)
|
||||
|
@ -549,18 +568,7 @@ void menuModelSetup(event_t event)
|
|||
|
||||
uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), // Registration ID
|
||||
|
||||
LABEL(InternalModule),
|
||||
INTERNAL_MODULE_MODE_ROWS, // module mode (PXX(2) / None)
|
||||
INTERNAL_MODULE_CHANNELS_ROWS, // Channels min and count
|
||||
IF_NOT_PXX2_MODULE(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1)),
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 0), // RxNum
|
||||
ANTENNA_ROW
|
||||
IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), // Failsafe
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 1), // Range check and Register buttons
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 0), // Module options
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 0), // Receiver 1
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 0), // Receiver 2
|
||||
IF_PXX2_MODULE(INTERNAL_MODULE, 0), // Receiver 3
|
||||
INTERNAL_MODULE_ROWS
|
||||
|
||||
LABEL(ExternalModule),
|
||||
EXTERNAL_MODULE_MODE_ROWS,
|
||||
|
@ -1250,7 +1258,7 @@ void menuModelSetup(event_t event)
|
|||
break;
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_CHANNELS:
|
||||
#endif
|
||||
#if defined(PCBSKY9X)
|
||||
|
@ -1452,7 +1460,9 @@ void menuModelSetup(event_t event)
|
|||
case ITEM_MODEL_SETUP_EXTRA_MODULE_BIND:
|
||||
#endif
|
||||
#if defined(PCBTARANIS)
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_NPXX2_BIND:
|
||||
#endif
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_NPXX2_BIND:
|
||||
#endif
|
||||
{
|
||||
|
@ -1620,7 +1630,7 @@ void menuModelSetup(event_t event)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_FAILSAFE:
|
||||
#endif
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_FAILSAFE: {
|
||||
|
@ -1862,7 +1872,7 @@ void menuModelSetup(event_t event)
|
|||
// some field just finished being edited
|
||||
if (old_editMode > 0 && s_editMode == 0) {
|
||||
switch(menuVerticalPosition) {
|
||||
#if defined(PCBTARANIS)
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_NPXX2_BIND:
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_MODEL_NUM:
|
||||
if (menuHorizontalPosition == 0)
|
||||
|
|
|
@ -38,65 +38,44 @@ void menuRadioDiagKeys(event_t event)
|
|||
{
|
||||
SIMPLE_SUBMENU(STR_MENU_RADIO_SWITCHES, 1);
|
||||
|
||||
lcdDrawText(14*FW, MENU_HEADER_HEIGHT+2*FH, STR_VTRIM);
|
||||
lcdDrawText(14*FW, MENU_HEADER_HEIGHT + 1, STR_VTRIM);
|
||||
|
||||
for (uint8_t i=0; i<9; i++) {
|
||||
coord_t y;
|
||||
|
||||
if (i < NUM_TRIMS_KEYS) {
|
||||
y = MENU_HEADER_HEIGHT + FH*3 + FH*(i/2);
|
||||
y = MENU_HEADER_HEIGHT + 1 + FH + FH*(i/2);
|
||||
if (i&1) lcdDraw1bitBitmap(14*FW, y, sticks, i/2, 0);
|
||||
displayKeyState(i&1? 20*FW : 18*FW, y, TRM_BASE+i);
|
||||
}
|
||||
|
||||
if (i < TRM_BASE) {
|
||||
#if defined(PCBX7) || defined(PCBX9LITE)
|
||||
y = MENU_HEADER_HEIGHT + FH + FH*i;
|
||||
if (i >= 2) {
|
||||
// hide PLUS and MINUS virtual buttons
|
||||
lcdDrawTextAtIndex(0, y, STR_VKEYS, (TRM_BASE-1-i), 0);
|
||||
displayKeyState(5*FW+4, y, KEY_MENU+(TRM_BASE-1-i));
|
||||
}
|
||||
#elif defined(PCBXLITE)
|
||||
y = MENU_HEADER_HEIGHT + FH*i;
|
||||
lcdDrawTextAtIndex(0, y, STR_VKEYS, (TRM_BASE-1-i), 0);
|
||||
displayKeyState(5*FW+2, y, KEY_SHIFT+(TRM_BASE-1-i));
|
||||
#else
|
||||
y = MENU_HEADER_HEIGHT + FH + FH*i;
|
||||
lcdDrawTextAtIndex(0, y, STR_VKEYS, (TRM_BASE-1-i), 0);
|
||||
displayKeyState(5*FW+2, y, KEY_MENU+(TRM_BASE-1-i));
|
||||
#endif
|
||||
if (i <= KEY_MAX) {
|
||||
y = MENU_HEADER_HEIGHT + 1 + FH*i;
|
||||
lcdDrawTextAtIndex(0, y, STR_VKEYS, i, 0);
|
||||
displayKeyState(5*FW+2, y, i);
|
||||
}
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
if (i < NUM_SWITCHES) {
|
||||
if (SWITCH_EXISTS(i)) {
|
||||
getvalue_t val = getValue(MIXSRC_FIRST_SWITCH+i);
|
||||
getvalue_t sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3));
|
||||
drawSwitch(8*FW+4, y, sw, 0);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#if defined(PCBSKY9X)
|
||||
if (i != SW_ID0) {
|
||||
y = MENU_HEADER_HEIGHT +i*FH - 2*FH;
|
||||
drawSwitch(8*FW, y, i+1, 0);
|
||||
displaySwitchState(11*FW+2, y, i);
|
||||
}
|
||||
#else
|
||||
if (i < NUM_SWITCHES) {
|
||||
if (SWITCH_EXISTS(i)) {
|
||||
y = MENU_HEADER_HEIGHT + 1 + FH*i;
|
||||
getvalue_t val = getValue(MIXSRC_FIRST_SWITCH+i);
|
||||
getvalue_t sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3));
|
||||
drawSwitch(8*FW+4, y, sw, 0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
#if defined(PCBX7) || defined(PCBX9LITE)
|
||||
coord_t y = MENU_HEADER_HEIGHT + FH;
|
||||
coord_t x = 6*FW+3;
|
||||
lcdDrawTextAtIndex(0, MENU_HEADER_HEIGHT + FH , STR_VRENCODERS, 0, 0);
|
||||
lcdDrawNumber(x, y, rotencValue, RIGHT);
|
||||
#else
|
||||
coord_t y = MENU_HEADER_HEIGHT;
|
||||
coord_t x = 19*FW;
|
||||
lcdDrawTextAtIndex(14*FW, y, STR_VRENCODERS, 0, 0);
|
||||
lcdDrawNumber(x, y, rotencValue, LEFT);
|
||||
coord_t y = MENU_HEADER_HEIGHT + 1 + FH*KEY_COUNT;
|
||||
lcdDrawText(0, y, STR_ROTARY_ENCODER);
|
||||
lcdDrawNumber(5*FW+FWNUM+2, y, rotencValue, RIGHT);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
}
|
||||
|
|
|
@ -147,7 +147,11 @@ enum MenuRadioHardwareItems {
|
|||
#endif
|
||||
|
||||
#if NUM_SWITCHES == 8
|
||||
#if defined(RADIO_T12)
|
||||
#define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|HIDDEN_ROW, NAVIGATION_LINE_BY_LINE|HIDDEN_ROW
|
||||
#else
|
||||
#define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1
|
||||
#endif
|
||||
#elif NUM_SWITCHES == 6
|
||||
#define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1
|
||||
#elif NUM_SWITCHES == 5
|
||||
|
|
|
@ -365,7 +365,7 @@ void menuRadioSetup(event_t event)
|
|||
SLIDER_5POS(y, g_eeGeneral.hapticStrength, STR_HAPTICSTRENGTH, event, attr);
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(GYRO)
|
||||
case ITEM_SETUP_GYRO_LABEL:
|
||||
lcdDrawTextAlignedLeft(y, STR_GYRO_LABEL);
|
||||
|
@ -395,7 +395,7 @@ void menuRadioSetup(event_t event)
|
|||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
||||
case ITEM_SETUP_CONTRAST:
|
||||
lcdDrawTextAlignedLeft(y, STR_CONTRAST);
|
||||
lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.contrast, attr|LEFT);
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#include "opentx.h"
|
||||
|
||||
// TODO duplicated code
|
||||
#if defined(PCBX7) || defined(PCBX9E) || defined(PCBX9LITE)
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
#define EVT_KEY_NEXT_LINE EVT_ROTARY_RIGHT
|
||||
#define EVT_KEY_PREVIOUS_LINE EVT_ROTARY_LEFT
|
||||
#else
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Copyright (C) OpenTX
|
||||
*
|
||||
* Based on code named
|
||||
* th9x - http://code.google.com/p/th9x
|
||||
* th9x - http://code.google.com/p/th9x
|
||||
* er9x - http://code.google.com/p/er9x
|
||||
* gruvin9x - http://code.google.com/p/gruvin9x
|
||||
*
|
||||
|
@ -42,7 +42,7 @@ enum AboutScreens {
|
|||
#define ABOUT_X 2
|
||||
#define ABOUT_INDENT 4
|
||||
|
||||
#if defined(PCBX7)
|
||||
#if defined(NAVIGATION_X7)
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_LONG(KEY_PAGE)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGE)
|
||||
#else
|
||||
|
|
|
@ -227,7 +227,7 @@ void displayVoltageOrAlarm()
|
|||
#define displayVoltageOrAlarm() displayBattVoltage()
|
||||
#endif
|
||||
|
||||
#if defined(PCBX7) || defined(PCBX9LITE)
|
||||
#if defined(NAVIGATION_X7)
|
||||
#define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGE)
|
||||
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
|
||||
|
@ -235,7 +235,7 @@ void displayVoltageOrAlarm()
|
|||
#define EVT_KEY_MODEL_MENU EVT_KEY_BREAK(KEY_MENU)
|
||||
#define EVT_KEY_GENERAL_MENU EVT_KEY_LONG(KEY_MENU)
|
||||
#define EVT_KEY_TELEMETRY EVT_KEY_LONG(KEY_PAGE)
|
||||
#elif defined(PCBXLITE)
|
||||
#elif defined(NAVIGATION_XLITE)
|
||||
#define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER)
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_UP)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_DOWN)
|
||||
|
|
|
@ -31,14 +31,14 @@ void menuStatisticsView(event_t event)
|
|||
|
||||
switch (event) {
|
||||
case EVT_KEY_FIRST(KEY_UP):
|
||||
#if defined(PCBX7)
|
||||
#if defined(NAVIGATION_X7)
|
||||
case EVT_KEY_BREAK(KEY_PAGE):
|
||||
#endif
|
||||
chainMenu(menuStatisticsDebug);
|
||||
break;
|
||||
|
||||
case EVT_KEY_FIRST(KEY_DOWN):
|
||||
#if defined(PCBX7)
|
||||
#if defined(NAVIGATION_X7)
|
||||
case EVT_KEY_LONG(KEY_PAGE):
|
||||
killEvents(event);
|
||||
chainMenu(menuStatisticsDebug2);
|
||||
|
@ -136,14 +136,14 @@ void menuStatisticsDebug(event_t event)
|
|||
|
||||
|
||||
case EVT_KEY_FIRST(KEY_UP):
|
||||
#if defined(PCBX7)
|
||||
#if defined(NAVIGATION_X7)
|
||||
case EVT_KEY_BREAK(KEY_PAGE):
|
||||
chainMenu(menuStatisticsDebug2);
|
||||
return;
|
||||
#endif
|
||||
|
||||
case EVT_KEY_FIRST(KEY_DOWN):
|
||||
#if defined(PCBX7)
|
||||
#if defined(NAVIGATION_X7)
|
||||
case EVT_KEY_LONG(KEY_PAGE):
|
||||
#endif
|
||||
killEvents(event);
|
||||
|
@ -250,14 +250,14 @@ void menuStatisticsDebug2(event_t event)
|
|||
break;
|
||||
|
||||
case EVT_KEY_FIRST(KEY_UP):
|
||||
#if defined(PCBX7)
|
||||
#if defined(NAVIGATION_X7)
|
||||
case EVT_KEY_BREAK(KEY_PAGE):
|
||||
#endif
|
||||
chainMenu(menuStatisticsView);
|
||||
return;
|
||||
|
||||
case EVT_KEY_FIRST(KEY_DOWN):
|
||||
#if defined(PCBX7)
|
||||
#if defined(NAVIGATION_X7)
|
||||
case EVT_KEY_LONG(KEY_PAGE):
|
||||
#endif
|
||||
killEvents(event);
|
||||
|
|
|
@ -216,7 +216,7 @@ enum NavigationDirection {
|
|||
#define decrTelemetryScreen() direction = up
|
||||
#define incrTelemetryScreen() direction = down
|
||||
|
||||
#if defined(PCBXLITE)
|
||||
#if defined(NAVIGATION_XLITE)
|
||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_LONG(KEY_LEFT)
|
||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_LONG(KEY_RIGHT)
|
||||
#elif defined(PCBX7)
|
||||
|
|
|
@ -30,21 +30,36 @@ void menuRadioDiagKeys(event_t event)
|
|||
{
|
||||
SIMPLE_SUBMENU(STR_MENU_RADIO_SWITCHES, 1);
|
||||
|
||||
lcdDrawText(14*FW, MENU_HEADER_HEIGHT+2*FH, STR_VTRIM);
|
||||
lcdDrawText(14*FW, MENU_HEADER_HEIGHT + 1, STR_VTRIM);
|
||||
|
||||
for (uint8_t i=0; i<9; i++) {
|
||||
coord_t y;
|
||||
|
||||
if (i<8) {
|
||||
y = MENU_HEADER_HEIGHT + FH*3 + FH*(i/2);
|
||||
if (i < NUM_TRIMS_KEYS) {
|
||||
y = MENU_HEADER_HEIGHT + 1 + FH + FH*(i/2);
|
||||
if (i&1) lcdDraw1bitBitmap(14*FW, y, sticks, i/2, 0);
|
||||
displayKeyState(i&1? 20*FW : 18*FW, y, TRM_BASE+i);
|
||||
}
|
||||
|
||||
if (i<6) {
|
||||
y = i*FH+MENU_HEADER_HEIGHT+FH;
|
||||
if (i <= KEY_MAX) {
|
||||
y = MENU_HEADER_HEIGHT + 1 + FH*i;
|
||||
lcdDrawTextAtIndex(0, y, STR_VKEYS, (5-i), 0);
|
||||
displayKeyState(5*FW+2, y, KEY_MENU+(5-i));
|
||||
displayKeyState(5*FW+2, y, i);
|
||||
}
|
||||
|
||||
if (i < NUM_SWITCHES) {
|
||||
if (SWITCH_EXISTS(i)) {
|
||||
y = MENU_HEADER_HEIGHT + 1 + FH*i;
|
||||
getvalue_t val = getValue(MIXSRC_FIRST_SWITCH+i);
|
||||
getvalue_t sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3));
|
||||
drawSwitch(8*FW+4, y, sw, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
coord_t y = MENU_HEADER_HEIGHT + 1 + FH*KEY_COUNT;
|
||||
lcdDrawText(0, y, STR_ROTARY_ENCODER);
|
||||
lcdDrawNumber(5*FW+FWNUM+2, y, rotencValue, RIGHT);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -33,6 +33,9 @@ set(SRC
|
|||
gui/navigation/common.cpp
|
||||
)
|
||||
|
||||
string(TOUPPER ${NAVIGATION_TYPE} NAVIGATION_TYPE)
|
||||
add_definitions(-DNAVIGATION_${NAVIGATION_TYPE})
|
||||
|
||||
include_directories(gui gui/${GUI_DIR})
|
||||
|
||||
if(GUI_DIR STREQUAL 128x64 OR GUI_DIR STREQUAL 212x64)
|
||||
|
|
|
@ -269,7 +269,7 @@ void menuRadioSdManager(event_t _event)
|
|||
menuVerticalOffset = reusableBuffer.sdManager.offset;
|
||||
break;
|
||||
|
||||
#if defined(PCBX9) || defined(PCBX7) // TODO NO_MENU_KEY
|
||||
#if defined(PCBX9) || defined(RADIO_X7) // TODO NO_MENU_KEY
|
||||
case EVT_KEY_LONG(KEY_MENU):
|
||||
if (SD_CARD_PRESENT() && !READ_ONLY() && s_editMode == 0) {
|
||||
killEvents(_event);
|
||||
|
|
|
@ -94,7 +94,7 @@ void readTextFile(int & lines_count)
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(PCBX7) || defined(PCBX9E)
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
#define EVT_KEY_NEXT_LINE EVT_ROTARY_RIGHT
|
||||
#define EVT_KEY_PREVIOUS_LINE EVT_ROTARY_LEFT
|
||||
#else
|
||||
|
|
|
@ -29,6 +29,15 @@ horzpos_t menuHorizontalPosition;
|
|||
|
||||
int8_t checkIncDec_Ret;
|
||||
|
||||
#if defined(RADIO_T12)
|
||||
#define DBLKEYS_PRESSED_RGT_LFT(in) ((in & (KEYS_GPIO_PIN_RIGHT + KEYS_GPIO_PIN_LEFT)) == (KEYS_GPIO_PIN_RIGHT + KEYS_GPIO_PIN_LEFT))
|
||||
// set to 0
|
||||
#define DBLKEYS_PRESSED_UP_DWN(in) ((in & (KEYS_GPIO_PIN_UP + KEYS_GPIO_PIN_DOWN)) == (KEYS_GPIO_PIN_UP + KEYS_GPIO_PIN_DOWN))
|
||||
// set to max
|
||||
#define DBLKEYS_PRESSED_RGT_UP(in) ((in & (KEYS_GPIO_PIN_RIGHT + KEYS_GPIO_PIN_UP)) == (KEYS_GPIO_PIN_RIGHT + KEYS_GPIO_PIN_UP))
|
||||
// set to min
|
||||
#define DBLKEYS_PRESSED_LFT_DWN(in) ((in & (KEYS_GPIO_PIN_LEFT + KEYS_GPIO_PIN_DOWN)) == (KEYS_GPIO_PIN_LEFT + KEYS_GPIO_PIN_DOWN))
|
||||
#else
|
||||
// invert the value
|
||||
#define DBLKEYS_PRESSED_RGT_LFT(in) ((in & ((1<<KEY_SHIFT) + (1<<KEY_UP))) == ((1<<KEY_SHIFT) + (1<<KEY_UP)))
|
||||
// set to 0
|
||||
|
@ -37,6 +46,7 @@ int8_t checkIncDec_Ret;
|
|||
#define DBLKEYS_PRESSED_RGT_UP(in) ((in & ((1<<KEY_SHIFT) + (1<<KEY_RIGHT))) == ((1<<KEY_SHIFT) + (1<<KEY_RIGHT)))
|
||||
// set to min
|
||||
#define DBLKEYS_PRESSED_LFT_DWN(in) ((in & ((1<<KEY_SHIFT) + (1<<KEY_LEFT))) == ((1<<KEY_SHIFT) + (1<<KEY_LEFT)))
|
||||
#endif
|
||||
|
||||
INIT_STOPS(stops100, 3, -100, 0, 100)
|
||||
INIT_STOPS(stops1000, 3, -1000, 0, 1000)
|
||||
|
|
|
@ -35,11 +35,12 @@ set(LUA_INCLUDES_STM32F4
|
|||
|
||||
if(PYTHONINTERP_FOUND)
|
||||
add_lua_export_target(x9lite ${LUA_INCLUDES_STM32F2} -DPCBTARANIS -DPCBX9LITE -DPCBX9)
|
||||
add_lua_export_target(x7 ${LUA_INCLUDES_STM32F2} -DPCBTARANIS -DPCBX7)
|
||||
add_lua_export_target(x7 ${LUA_INCLUDES_STM32F2} -DPCBTARANIS -DPCBX7 -DRADIO_X7)
|
||||
add_lua_export_target(xlite ${LUA_INCLUDES_STM32F2} -DPCBTARANIS -DPCBXLITE)
|
||||
add_lua_export_target(xlites ${LUA_INCLUDES_STM32F2} -DPCBTARANIS -DPCBXLITES -DPCBXLITE -DGYRO)
|
||||
add_lua_export_target(x9d ${LUA_INCLUDES_STM32F2} -DPCBTARANIS -DPCBX9D -DPCBX9)
|
||||
add_lua_export_target(x9e ${LUA_INCLUDES_STM32F4} -DPCBTARANIS -DPCBX9E -DPCBX9 -DSTM32F40_41xxx)
|
||||
add_lua_export_target(x10 ${LUA_INCLUDES_STM32F4} -DPCBHORUS -DPCBX10 -DSTM32F40_41xxx)
|
||||
add_lua_export_target(x12s ${LUA_INCLUDES_STM32F4} -DPCBHORUS -DPCBX12S -DSTM32F40_41xxx)
|
||||
add_lua_export_target(t12 ${LUA_INCLUDES_STM32F2} -DPCBTARANIS -DPCBX7 -DRADIO_T12)
|
||||
endif()
|
||||
|
|
|
@ -31,8 +31,10 @@
|
|||
#include "lua/lua_exports_x10.inc"
|
||||
#elif defined(PCBX9E)
|
||||
#include "lua/lua_exports_x9e.inc"
|
||||
#elif defined(PCBX7)
|
||||
#elif defined(RADIO_X7)
|
||||
#include "lua/lua_exports_x7.inc"
|
||||
#elif defined(RADIO_T12)
|
||||
#include "lua/lua_exports_t12.inc"
|
||||
#elif defined(PCBX9LITE)
|
||||
#include "lua/lua_exports_x9lite.inc"
|
||||
#elif defined(PCBXLITES)
|
||||
|
@ -1528,6 +1530,26 @@ const luaR_value_entry opentxConstants[] = {
|
|||
{ "FORCE", FORCE },
|
||||
{ "ERASE", ERASE },
|
||||
{ "ROUND", ROUND },
|
||||
#elif defined(RADIO_T12)
|
||||
{ "EVT_DOWN_FIRST", EVT_KEY_FIRST(KEY_DOWN) },
|
||||
{ "EVT_UP_FIRST", EVT_KEY_FIRST(KEY_UP) },
|
||||
{ "EVT_LEFT_FIRST", EVT_KEY_FIRST(KEY_LEFT) },
|
||||
{ "EVT_RIGHT_FIRST", EVT_KEY_FIRST(KEY_RIGHT) },
|
||||
{ "EVT_DOWN_BREAK", EVT_KEY_BREAK(KEY_DOWN) },
|
||||
{ "EVT_UP_BREAK", EVT_KEY_BREAK(KEY_UP) },
|
||||
{ "EVT_LEFT_BREAK", EVT_KEY_BREAK(KEY_LEFT) },
|
||||
{ "EVT_RIGHT_BREAK", EVT_KEY_BREAK(KEY_RIGHT) },
|
||||
{ "EVT_DOWN_LONG", EVT_KEY_LONG(KEY_DOWN) },
|
||||
{ "EVT_UP_LONG", EVT_KEY_LONG(KEY_UP) },
|
||||
{ "EVT_LEFT_LONG", EVT_KEY_LONG(KEY_LEFT) },
|
||||
{ "EVT_RIGHT_LONG", EVT_KEY_LONG(KEY_RIGHT) },
|
||||
{ "EVT_DOWN_REPT", EVT_KEY_REPT(KEY_DOWN) },
|
||||
{ "EVT_UP_REPT", EVT_KEY_REPT(KEY_UP) },
|
||||
{ "EVT_LEFT_REPT", EVT_KEY_REPT(KEY_LEFT) },
|
||||
{ "EVT_RIGHT_REPT", EVT_KEY_REPT(KEY_RIGHT) },
|
||||
{ "FORCE", FORCE },
|
||||
{ "ERASE", ERASE },
|
||||
{ "ROUND", ROUND },
|
||||
#elif defined(PCBTARANIS)
|
||||
{ "EVT_MENU_BREAK", EVT_KEY_BREAK(KEY_MENU) },
|
||||
{ "EVT_MENU_LONG", EVT_KEY_LONG(KEY_MENU) },
|
||||
|
|
|
@ -637,7 +637,7 @@ bool luaLoadFunctionScript(uint8_t index, uint8_t ref)
|
|||
{
|
||||
if ((ref >= SCRIPT_GFUNC_FIRST) && g_model.noGlobalFunctions)
|
||||
return false;
|
||||
|
||||
|
||||
CustomFunctionData & fn = (ref < SCRIPT_GFUNC_FIRST ? g_model.customFn[index] : g_eeGeneral.customFn[index]);
|
||||
|
||||
if (fn.func == FUNC_PLAY_SCRIPT && ZEXIST(fn.play.name)) {
|
||||
|
@ -883,7 +883,7 @@ void luaDoOneRunStandalone(event_t evt)
|
|||
standaloneScript.state = SCRIPT_NOFILE;
|
||||
luaState = INTERPRETER_RELOAD_PERMANENT_SCRIPTS;
|
||||
}
|
||||
#if !defined(PCBHORUS) && !defined(PCBXLITE)
|
||||
#if defined(KEYS_GPIO_REG_MENU)
|
||||
// TODO find another key and add a #define
|
||||
else if (evt == EVT_KEY_LONG(KEY_MENU)) {
|
||||
killEvents(evt);
|
||||
|
|
|
@ -155,11 +155,9 @@ extern uint16_t maxLuaInterval;
|
|||
extern uint16_t maxLuaDuration;
|
||||
extern uint8_t instructionsPercent;
|
||||
|
||||
#if defined(PCBXLITE)
|
||||
#define IS_MASKABLE(key) ((key) != KEY_EXIT && (key) != KEY_ENTER)
|
||||
#elif defined(PCBTARANIS)
|
||||
#if defined(KEYS_GPIO_REG_PAGE)
|
||||
#define IS_MASKABLE(key) ((key) != KEY_EXIT && (key) != KEY_ENTER && ((luaState & INTERPRETER_RUNNING_STANDALONE_SCRIPT) || (key) != KEY_PAGE))
|
||||
#elif defined(PCBHORUS)
|
||||
#else
|
||||
#define IS_MASKABLE(key) ((key) != KEY_EXIT && (key) != KEY_ENTER)
|
||||
#endif
|
||||
struct LuaField {
|
||||
|
|
|
@ -253,8 +253,10 @@ void generalDefault()
|
|||
g_eeGeneral.switchConfig = (SWITCH_TOGGLE << 10) + (SWITCH_TOGGLE << 8) + (SWITCH_2POS << 6) + (SWITCH_2POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0);
|
||||
#elif defined(PCBXLITE)
|
||||
g_eeGeneral.switchConfig = (SWITCH_2POS << 6) + (SWITCH_2POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0);
|
||||
#elif defined(PCBX7)
|
||||
#elif defined(RADIO_X7)
|
||||
g_eeGeneral.switchConfig = 0x000006ff; // 4x3POS, 1x2POS, 1xTOGGLE
|
||||
#elif defined(RADIO_T12)
|
||||
g_eeGeneral.switchConfig = (SWITCH_2POS << 10) + (SWITCH_2POS << 8) + (SWITCH_3POS << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0);
|
||||
#elif defined(PCBX9LITE)
|
||||
g_eeGeneral.switchConfig = (SWITCH_TOGGLE << 8) + (SWITCH_2POS << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0);
|
||||
#elif defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
|
@ -470,11 +472,14 @@ void modelDefault(uint8_t id)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
g_model.moduleData[INTERNAL_MODULE].type = IS_PXX2_INTERNAL_ENABLED() ? MODULE_TYPE_ACCESS_ISRM : MODULE_TYPE_PXX_XJT;
|
||||
g_model.moduleData[INTERNAL_MODULE].channelsCount = defaultModuleChannels_M8(INTERNAL_MODULE);
|
||||
#elif defined(PCBSKY9X)
|
||||
g_model.moduleData[EXTERNAL_MODULE].type = MODULE_TYPE_PPM;
|
||||
#elif defined(RADIO_T12)
|
||||
g_model.moduleData[EXTERNAL_MODULE].type = MODULE_TYPE_NONE;
|
||||
g_model.moduleData[EXTERNAL_MODULE].type = MODULE_TYPE_MULTIMODULE;
|
||||
#endif
|
||||
|
||||
#if defined(PCBXLITE)
|
||||
|
|
|
@ -131,7 +131,8 @@ const char * getBasename(const char * path);
|
|||
#define OTX_FOURCC 0x3B78746F // otx for Taranis X-Lite S
|
||||
#elif defined(PCBXLITE)
|
||||
#define OTX_FOURCC 0x3978746F // otx for Taranis X-Lite
|
||||
#elif defined(PCBX7)
|
||||
#define O9X_FOURCC 0x3978396F // o9x for Taranis X-Lite
|
||||
#elif defined(RADIO_X7)
|
||||
#define OTX_FOURCC 0x3678746F // otx for Taranis X7
|
||||
#elif defined(PCBX9LITE)
|
||||
#define OTX_FOURCC 0x3C78746F // otx for Taranis X9-Lite
|
||||
|
@ -139,6 +140,10 @@ const char * getBasename(const char * path);
|
|||
#define OTX_FOURCC 0x3378746F // otx for Taranis X9D
|
||||
#elif defined(PCBSKY9X)
|
||||
#define OTX_FOURCC 0x3278746F // otx for sky9x
|
||||
#define O9X_FOURCC 0x3278396F // o9x for sky9x
|
||||
#elif defined(RADIO_T12)
|
||||
#define OTX_FOURCC 0x3D78746F // otx for Jumper T12
|
||||
#define O9X_FOURCC 0x3D78396F // o9x for Jumper T12
|
||||
#endif
|
||||
|
||||
bool isFileAvailable(const char * filename, bool exclDir = false);
|
||||
|
|
|
@ -250,8 +250,10 @@ void Open9xSim::updateKeysAndSwitches(bool start)
|
|||
KEY_Down, KEY_DOWN,
|
||||
KEY_Right, KEY_RIGHT,
|
||||
KEY_Left, KEY_LEFT,
|
||||
#elif defined(PCBXLITE)
|
||||
#elif defined(PCBXLITE) || defined(RADIO_T12)
|
||||
#if defined(KEYS_GPIO_REG_SHIFT)
|
||||
KEY_Shift_L, KEY_SHIFT,
|
||||
#endif
|
||||
KEY_Return, KEY_ENTER,
|
||||
KEY_BackSpace, KEY_EXIT,
|
||||
KEY_Right, KEY_RIGHT,
|
||||
|
|
|
@ -272,7 +272,11 @@ char * getSwitchString(char * dest, swsrc_t idx)
|
|||
if (swinfo.quot >= 5)
|
||||
*s++ = 'H' + swinfo.quot - 5;
|
||||
else if (swinfo.quot == 4)
|
||||
#if defined(RADIO_T12)
|
||||
*s++ = 'G';
|
||||
#else
|
||||
*s++ = 'F';
|
||||
#endif
|
||||
else
|
||||
*s++ = 'A'+swinfo.quot;
|
||||
#else
|
||||
|
|
|
@ -85,7 +85,7 @@ set(BOOTLOADER_SRC
|
|||
bin_files.cpp
|
||||
)
|
||||
|
||||
if(PCB STREQUAL X12S OR PCB STREQUAL X10 OR PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL X9LITE)
|
||||
if(PCB STREQUAL X12S OR PCB STREQUAL X10 OR PCB STREQUAL X9E OR (PCB STREQUAL X7 AND NOT (PCBREV STREQUAL T12)) OR PCB STREQUAL X9LITE)
|
||||
set(BOOTLOADER_SRC
|
||||
${BOOTLOADER_SRC}
|
||||
../../../../../targets/common/arm/stm32/rotary_encoder_driver.cpp
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
option(DISK_CACHE "Enable SD card disk cache" YES)
|
||||
option(UNEXPECTED_SHUTDOWN "Enable the Unexpected Shutdown screen" YES)
|
||||
option(PXX1 "PXX1 protocol support" ON)
|
||||
option(PXX2 "PXX2 protocol support" ON)
|
||||
option(PXX2 "PXX2 protocol support" OFF)
|
||||
|
||||
set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
|
||||
set(CPU_TYPE STM32F4)
|
||||
|
|
|
@ -208,6 +208,13 @@ void simuSetKey(uint8_t key, bool state)
|
|||
KEY_CASE(KEY_LEFT, KEYS_GPIO_REG_LEFT, KEYS_GPIO_PIN_LEFT)
|
||||
KEY_CASE(KEY_UP, KEYS_GPIO_REG_UP, KEYS_GPIO_PIN_UP)
|
||||
KEY_CASE(KEY_DOWN, KEYS_GPIO_REG_DOWN, KEYS_GPIO_PIN_DOWN)
|
||||
#elif defined(RADIO_T12)
|
||||
KEY_CASE(KEY_EXIT, KEYS_GPIO_REG_EXIT, KEYS_GPIO_PIN_EXIT)
|
||||
KEY_CASE(KEY_ENTER, KEYS_GPIO_REG_ENTER, KEYS_GPIO_PIN_ENTER)
|
||||
KEY_CASE(KEY_RIGHT, KEYS_GPIO_REG_RIGHT, KEYS_GPIO_PIN_RIGHT)
|
||||
KEY_CASE(KEY_LEFT, KEYS_GPIO_REG_LEFT, KEYS_GPIO_PIN_LEFT)
|
||||
KEY_CASE(KEY_UP, KEYS_GPIO_REG_UP, KEYS_GPIO_PIN_UP)
|
||||
KEY_CASE(KEY_DOWN, KEYS_GPIO_REG_DOWN, KEYS_GPIO_PIN_DOWN)
|
||||
#elif defined(PCBTARANIS)
|
||||
KEY_CASE(KEY_MENU, KEYS_GPIO_REG_MENU, KEYS_GPIO_PIN_MENU)
|
||||
KEY_CASE(KEY_EXIT, KEYS_GPIO_REG_EXIT, KEYS_GPIO_PIN_EXIT)
|
||||
|
|
|
@ -63,6 +63,9 @@ enum EnumKeys
|
|||
KEY_RIGHT,
|
||||
KEY_LEFT,
|
||||
|
||||
KEY_COUNT,
|
||||
KEY_MAX = KEY_COUNT - 1,
|
||||
|
||||
TRM_BASE,
|
||||
TRM_LH_DWN = TRM_BASE,
|
||||
TRM_LH_UP,
|
||||
|
|
|
@ -4,7 +4,7 @@ option(INTERNAL_MODULE_PPM "Support for PPM internal module hack" OFF)
|
|||
option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module replacement" OFF)
|
||||
option(USEHORUSBT "X9E BT module replaced by Horus BT module" OFF)
|
||||
option(PXX1 "PXX1 protocol support" ON)
|
||||
option(PXX2 "PXX2 protocol support" ON)
|
||||
option(PXX2 "PXX2 protocol support" OFF)
|
||||
|
||||
if(PCB STREQUAL X9E)
|
||||
set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
|
||||
|
@ -74,13 +74,22 @@ elseif(PCB STREQUAL X7)
|
|||
set(CPU_TYPE_FULL STM32F205xE) # for size report
|
||||
set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
|
||||
set(HAPTIC YES)
|
||||
set(LUA_EXPORT lua_export_x7)
|
||||
set(FLAVOUR x7)
|
||||
if(PCBREV STREQUAL T12)
|
||||
set(LUA_EXPORT lua_export_t12)
|
||||
set(FLAVOUR t12)
|
||||
set(NAVIGATION_TYPE xlite)
|
||||
set(MULTIMODULE ON)
|
||||
add_definitions(-DRADIO_T12)
|
||||
else()
|
||||
set(LUA_EXPORT lua_export_x7)
|
||||
set(FLAVOUR x7)
|
||||
set(NAVIGATION_TYPE x7)
|
||||
add_definitions(-DRADIO_X7)
|
||||
endif()
|
||||
add_definitions(-DPCBX7 -DSOFTWARE_VOLUME)
|
||||
add_definitions(-DEEPROM_VARIANT=0x4000)
|
||||
add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
|
||||
set(GUI_DIR 128x64)
|
||||
set(NAVIGATION_TYPE x7)
|
||||
set(BITMAPS_TARGET 9x_bitmaps)
|
||||
set(FONTS_TARGET 9x_fonts_1bit)
|
||||
set(LCD_DRIVER lcd_driver_spi.cpp)
|
||||
|
@ -98,7 +107,7 @@ elseif(PCB STREQUAL X9LITE)
|
|||
add_definitions(-DBOARD_NAME="x9lite")
|
||||
add_definitions(-DPCBX9LITE -DPCBX9 -DSOFTWARE_VOLUME)
|
||||
add_definitions(-DEEPROM_VARIANT=0x0800)
|
||||
add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
|
||||
set(PXX2 ON)
|
||||
set(GUI_DIR 128x64)
|
||||
set(NAVIGATION_TYPE x7)
|
||||
set(BITMAPS_TARGET 9x_bitmaps)
|
||||
|
@ -144,6 +153,7 @@ elseif(PCB STREQUAL XLITES)
|
|||
set(LCD_DRIVER lcd_driver_spi.cpp)
|
||||
set(GVAR_SCREEN model_gvars.cpp)
|
||||
set(STATUS_LEDS YES)
|
||||
set(PXX2 ON)
|
||||
endif()
|
||||
|
||||
if(PCB STREQUAL XLITES)
|
||||
|
@ -185,7 +195,7 @@ if(NOT PCB STREQUAL XLITE)
|
|||
)
|
||||
endif()
|
||||
|
||||
if(PCB STREQUAL X9E OR PCB STREQUAL X7 OR PCB STREQUAL X9LITE)
|
||||
if(PCB STREQUAL X9E OR (PCB STREQUAL X7 AND NOT (PCBREV STREQUAL T12)) OR PCB STREQUAL X9LITE)
|
||||
set(TARGET_SRC
|
||||
${TARGET_SRC}
|
||||
../common/arm/stm32/rotary_encoder_driver.cpp
|
||||
|
|
|
@ -94,6 +94,13 @@ extern "C" {
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(PCBX9E) || defined(RADIO_X7) || defined(PCBX9LITE)
|
||||
// Rotary Encoder driver
|
||||
#define ROTARY_ENCODER_NAVIGATION
|
||||
void rotaryEncoderInit(void);
|
||||
void rotaryEncoderCheck(void);
|
||||
#endif
|
||||
|
||||
#define FLASHSIZE 0x80000
|
||||
#define BOOTLOADER_SIZE 0x8000
|
||||
#define FIRMWARE_ADDRESS 0x08000000
|
||||
|
@ -184,7 +191,11 @@ uint32_t isBootloaderStart(const uint8_t * buffer);
|
|||
#define EXTERNAL_MODULE_OFF() EXTERNAL_MODULE_PWR_OFF()
|
||||
#endif
|
||||
|
||||
#if defined(RADIO_T12)
|
||||
#define IS_INTERNAL_MODULE_ON() false
|
||||
#else
|
||||
#define IS_INTERNAL_MODULE_ON() (GPIO_ReadInputDataBit(INTMODULE_PWR_GPIO, INTMODULE_PWR_GPIO_PIN) == Bit_SET)
|
||||
#endif
|
||||
|
||||
void init_ppm(uint8_t module);
|
||||
void disable_ppm(uint8_t module);
|
||||
|
@ -263,24 +274,45 @@ int sbusGetByte(uint8_t * byte);
|
|||
// Keys driver
|
||||
enum EnumKeys
|
||||
{
|
||||
#if defined(PCBXLITE)
|
||||
#if defined(KEYS_GPIO_REG_SHIFT)
|
||||
KEY_SHIFT,
|
||||
#else
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIO_REG_MENU)
|
||||
KEY_MENU,
|
||||
#endif
|
||||
|
||||
KEY_EXIT,
|
||||
KEY_ENTER,
|
||||
#if defined(PCBXLITE)
|
||||
|
||||
#if defined(KEYS_GPIO_REG_DOWN)
|
||||
KEY_DOWN,
|
||||
KEY_UP,
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIO_REG_RIGHT)
|
||||
KEY_RIGHT,
|
||||
KEY_LEFT,
|
||||
#else
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIO_REG_PAGE)
|
||||
KEY_PAGE,
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIO_REG_PLUS)
|
||||
KEY_PLUS,
|
||||
KEY_MINUS,
|
||||
#endif
|
||||
|
||||
KEY_COUNT,
|
||||
KEY_MAX = KEY_COUNT - 1,
|
||||
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
KEY_PLUS,
|
||||
KEY_MINUS,
|
||||
#endif
|
||||
|
||||
|
||||
TRM_BASE,
|
||||
TRM_LH_DWN = TRM_BASE,
|
||||
TRM_LH_UP,
|
||||
|
@ -300,7 +332,7 @@ enum EnumKeys
|
|||
#define KEY_DOWN KEY_PLUS
|
||||
#define KEY_RIGHT KEY_PLUS
|
||||
#define KEY_LEFT KEY_MINUS
|
||||
#elif defined(PCBXLITE)
|
||||
#elif defined(NAVIGATION_XLITE)
|
||||
#define KEY_PLUS KEY_RIGHT
|
||||
#define KEY_MINUS KEY_LEFT
|
||||
#else
|
||||
|
@ -435,13 +467,6 @@ uint32_t readTrims(void);
|
|||
#define TRIMS_PRESSED() (readTrims())
|
||||
#define KEYS_PRESSED() (readKeys())
|
||||
|
||||
#if defined(PCBX9E) || defined(PCBX7) || defined(PCBX9LITE)
|
||||
// Rotary Encoder driver
|
||||
#define ROTARY_ENCODER_NAVIGATION
|
||||
void rotaryEncoderInit(void);
|
||||
void rotaryEncoderCheck(void);
|
||||
#endif
|
||||
|
||||
// WDT driver
|
||||
#define WDTO_500MS 500
|
||||
#if defined(WATCHDOG_DISABLED) || defined(SIMU)
|
||||
|
|
|
@ -46,7 +46,20 @@
|
|||
#define KEYS_GPIO_PIN_LEFT GPIO_Pin_12 // PE.12
|
||||
#define KEYS_GPIO_REG_RIGHT GPIOE->IDR
|
||||
#define KEYS_GPIO_PIN_RIGHT GPIO_Pin_13 // PE.13
|
||||
#elif defined(PCBX7)
|
||||
#elif defined(RADIO_T12)
|
||||
#define KEYS_GPIO_REG_EXIT GPIOD->IDR
|
||||
#define KEYS_GPIO_PIN_EXIT GPIO_Pin_2 // PD.02
|
||||
#define KEYS_GPIO_REG_ENTER GPIOE->IDR
|
||||
#define KEYS_GPIO_PIN_ENTER GPIO_Pin_10 // PE.10
|
||||
#define KEYS_GPIO_REG_UP GPIOE->IDR
|
||||
#define KEYS_GPIO_PIN_UP GPIO_Pin_9 // PE.09
|
||||
#define KEYS_GPIO_REG_DOWN GPIOE->IDR
|
||||
#define KEYS_GPIO_PIN_DOWN GPIO_Pin_11 // PE.11
|
||||
#define KEYS_GPIO_REG_LEFT GPIOD->IDR
|
||||
#define KEYS_GPIO_PIN_LEFT GPIO_Pin_7 // PD.07
|
||||
#define KEYS_GPIO_REG_RIGHT GPIOD->IDR
|
||||
#define KEYS_GPIO_PIN_RIGHT GPIO_Pin_3 // PD.03
|
||||
#elif defined(RADIO_X7)
|
||||
#define KEYS_GPIO_REG_PAGE GPIOD->IDR
|
||||
#define KEYS_GPIO_PIN_PAGE GPIO_Pin_3 // PD.03
|
||||
#define KEYS_GPIO_REG_MENU GPIOD->IDR
|
||||
|
@ -92,7 +105,7 @@
|
|||
#define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOD
|
||||
#define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource12
|
||||
#define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource13
|
||||
#elif defined(PCBX7)
|
||||
#elif defined(RADIO_X7)
|
||||
#define ROTARY_ENCODER_GPIO GPIOE
|
||||
#define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_9 // PE.09
|
||||
#define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_11 // PE.11
|
||||
|
@ -121,7 +134,7 @@
|
|||
#endif
|
||||
|
||||
// This is for SIMU: reuse rotary encoder pins to map UP and DOWN keyboard keys
|
||||
#if defined(SIMU) && (defined(PCBX9E) || defined(PCBX7) || defined(PCBX9LITE))
|
||||
#if defined(SIMU) && defined(ROTARY_ENCODER_NAVIGATION)
|
||||
#define KEYS_GPIO_REG_PLUS ROTARY_ENCODER_GPIO->IDR
|
||||
#define KEYS_GPIO_PIN_PLUS ROTARY_ENCODER_GPIO_PIN_A
|
||||
#define KEYS_GPIO_REG_MINUS ROTARY_ENCODER_GPIO->IDR
|
||||
|
@ -353,8 +366,11 @@
|
|||
#define SWITCHES_GPIO_PIN_G_H GPIO_Pin_3 // PF.03
|
||||
#define SWITCHES_GPIO_REG_G_L GPIOF->IDR
|
||||
#define SWITCHES_GPIO_PIN_G_L GPIO_Pin_4 // PF.04
|
||||
#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE)
|
||||
#elif defined(RADIO_X7) || defined(PCBXLITE) || defined(PCBX9LITE)
|
||||
// no SWG
|
||||
#elif defined(RADIO_T12)
|
||||
#define SWITCHES_GPIO_REG_G GPIOE->IDR
|
||||
#define SWITCHES_GPIO_PIN_G GPIO_Pin_14 // PE.14
|
||||
#else
|
||||
#define SWITCHES_GPIO_REG_G_H GPIOE->IDR
|
||||
#define SWITCHES_GPIO_PIN_G_H GPIO_Pin_9 // PE.09
|
||||
|
@ -457,7 +473,13 @@
|
|||
#define KEYS_GPIOB_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5)
|
||||
#define KEYS_GPIOC_PINS (GPIO_Pin_4 | GPIO_Pin_5)
|
||||
#define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14)
|
||||
#elif defined(PCBX7)
|
||||
#elif defined(RADIO_T12)
|
||||
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE)
|
||||
#define KEYS_GPIOA_PINS SWITCHES_GPIO_PIN_B_H
|
||||
#define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU)
|
||||
#define KEYS_GPIOD_PINS (TRIMS_GPIO_PIN_LHL | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_LEFT | KEYS_GPIO_PIN_RIGHT | SWITCHES_GPIO_PIN_C_L | SWITCHES_GPIO_PIN_H)
|
||||
#define KEYS_GPIOE_PINS (KEYS_GPIO_PIN_UP | KEYS_GPIO_PIN_DOWN | KEYS_GPIO_PIN_ENTER | TRIMS_GPIO_PIN_RHR | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_A_H | SWITCHES_GPIO_PIN_G)
|
||||
#elif defined(RADIO_X7)
|
||||
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
|
||||
#define KEYS_GPIOA_PINS SWITCHES_GPIO_PIN_B_H
|
||||
#define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU | SWITCHES_GPIO_PIN_I | SWITCHES_GPIO_PIN_J)
|
||||
|
@ -701,7 +723,9 @@
|
|||
#endif
|
||||
|
||||
// Internal Module
|
||||
#define HARDWARE_INTERNAL_MODULE
|
||||
#if !defined(RADIO_T12)
|
||||
#define HARDWARE_INTERNAL_MODULE
|
||||
#endif
|
||||
#if !(defined(PCBXLITES) && !defined(PCBX9LITE))
|
||||
#define INTERNAL_MODULE_PXX1
|
||||
#endif
|
||||
|
@ -739,7 +763,7 @@
|
|||
// #define INTMODULE_TIMER_IRQn TIM3_IRQn
|
||||
// #define INTMODULE_TIMER_IRQHandler TIM3_IRQHandler
|
||||
// #define INTMODULE_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
|
||||
#elif defined(PCBX9E) || defined(PCBX9DP) || defined(PCBX7)
|
||||
#elif defined(PCBX9E) || defined(PCBX9DP) || defined(RADIO_X7)
|
||||
#define INTMODULE_PULSES
|
||||
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2)
|
||||
#define INTMODULE_RCC_APB1Periph 0
|
||||
|
@ -759,6 +783,27 @@
|
|||
#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)
|
||||
//left here is somebody will mod the radio for internal module
|
||||
#define INTMODULE_PULSES
|
||||
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2)
|
||||
#define INTMODULE_RCC_APB1Periph 0
|
||||
#define INTMODULE_RCC_APB2Periph RCC_APB2Periph_TIM1
|
||||
#define INTMODULE_PWR_GPIO GPIOC
|
||||
#define INTMODULE_PWR_GPIO_PIN GPIO_Pin_6 // JUMPER INT PC.06 //X7 INT is PC.06
|
||||
#define INTMODULE_TX_GPIO GPIOA
|
||||
#define INTMODULE_TX_GPIO_PIN GPIO_Pin_7 // JUMPER INT PA.07 //X7 INT is PA.10
|
||||
#define INTMODULE_TX_GPIO_PinSource GPIO_PinSource10
|
||||
#define INTMODULE_TIMER TIM1
|
||||
#define INTMODULE_TIMER_CC_IRQn TIM1_CC_IRQn
|
||||
#define INTMODULE_TIMER_CC_IRQHandler TIM1_CC_IRQHandler
|
||||
#define INTMODULE_TX_GPIO_AF GPIO_AF_TIM1
|
||||
#define INTMODULE_DMA_CHANNEL DMA_Channel_6
|
||||
#define INTMODULE_DMA_STREAM DMA2_Stream5
|
||||
#define INTMODULE_DMA_STREAM_IRQn DMA2_Stream5_IRQn
|
||||
#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)
|
||||
#else
|
||||
#define INTMODULE_PULSES
|
||||
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
|
||||
|
@ -823,6 +868,30 @@
|
|||
#define EXTMODULE_USART_DMA_CHANNEL DMA_Channel_5
|
||||
#define EXTMODULE_USART_DMA_STREAM DMA2_Stream6
|
||||
#define EXTMODULE_USART_DMA_STREAM_IRQn DMA2_Stream6_IRQn
|
||||
#elif defined(RADIO_T12)
|
||||
//Jumper T12v2 external module configured
|
||||
#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
|
||||
#define EXTMODULE_RCC_APB2Periph RCC_APB2Periph_TIM8
|
||||
#define EXTMODULE_PWR_GPIO GPIOD
|
||||
#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // JUMPER EXT PD.08 // X7 EXT is PD.08
|
||||
#define EXTERNAL_MODULE_PWR_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN)
|
||||
#define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN)
|
||||
#define IS_EXTERNAL_MODULE_ON() (GPIO_ReadInputDataBit(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) == Bit_SET)
|
||||
#define EXTMODULE_TX_GPIO GPIOA
|
||||
#define EXTMODULE_TX_GPIO_PIN GPIO_Pin_7 // JUMPER EXT PA.07 // X7 EXT is PA.07
|
||||
#define EXTMODULE_TX_GPIO_PinSource GPIO_PinSource7
|
||||
#define EXTMODULE_TIMER TIM8
|
||||
#define EXTMODULE_TIMER_TX_GPIO_AF GPIO_AF_TIM8 // TIM8_CH1N
|
||||
#define EXTMODULE_TIMER_CC_IRQn TIM8_CC_IRQn
|
||||
#define EXTMODULE_TIMER_CC_IRQHandler TIM8_CC_IRQHandler
|
||||
#define EXTMODULE_TIMER_DMA_CHANNEL DMA_Channel_7
|
||||
#define EXTMODULE_TIMER_DMA_STREAM DMA2_Stream1
|
||||
#define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream1_IRQn
|
||||
#define EXTMODULE_TIMER_DMA_STREAM_IRQHandler DMA2_Stream1_IRQHandler
|
||||
#define EXTMODULE_TIMER_DMA_FLAG_TC DMA_IT_TCIF1
|
||||
#define EXTMODULE_TIMER_OUTPUT_ENABLE TIM_CCER_CC1NE
|
||||
#define EXTMODULE_TIMER_OUTPUT_POLARITY TIM_CCER_CC1NP
|
||||
#define EXTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
|
||||
#else
|
||||
#define EXTMODULE_PULSES
|
||||
#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
|
||||
|
@ -947,11 +1016,11 @@
|
|||
#define TELEMETRY_DIR_GPIO GPIOD
|
||||
#define TELEMETRY_DIR_GPIO_PIN GPIO_Pin_4 // PD.04
|
||||
#if defined(PCBXLITE) || defined(PCBX9LITE)
|
||||
#define TELEMETRY_DIR_OUTPUT() TELEMETRY_DIR_GPIO->BSRRH = TELEMETRY_DIR_GPIO_PIN
|
||||
#define TELEMETRY_DIR_INPUT() TELEMETRY_DIR_GPIO->BSRRL = TELEMETRY_DIR_GPIO_PIN
|
||||
#define TELEMETRY_DIR_OUTPUT() TELEMETRY_DIR_GPIO->BSRRH = TELEMETRY_DIR_GPIO_PIN
|
||||
#define TELEMETRY_DIR_INPUT() TELEMETRY_DIR_GPIO->BSRRL = TELEMETRY_DIR_GPIO_PIN
|
||||
#else
|
||||
#define TELEMETRY_DIR_OUTPUT() TELEMETRY_DIR_GPIO->BSRRL = TELEMETRY_DIR_GPIO_PIN
|
||||
#define TELEMETRY_DIR_INPUT() TELEMETRY_DIR_GPIO->BSRRH = TELEMETRY_DIR_GPIO_PIN
|
||||
#define TELEMETRY_DIR_OUTPUT() TELEMETRY_DIR_GPIO->BSRRL = TELEMETRY_DIR_GPIO_PIN
|
||||
#define TELEMETRY_DIR_INPUT() TELEMETRY_DIR_GPIO->BSRRH = TELEMETRY_DIR_GPIO_PIN
|
||||
#endif
|
||||
#define TELEMETRY_GPIO GPIOD
|
||||
#define TELEMETRY_TX_GPIO_PIN GPIO_Pin_5 // PD.05
|
||||
|
@ -1399,4 +1468,4 @@
|
|||
#define TIMER_2MHz_RCC_APB1Periph RCC_APB1Periph_TIM7
|
||||
#define TIMER_2MHz_TIMER TIM7
|
||||
|
||||
#endif // _HAL_H_
|
||||
#endif // _HAL_H_
|
|
@ -2,7 +2,7 @@
|
|||
* Copyright (C) OpenTX
|
||||
*
|
||||
* Based on code named
|
||||
* th9x - http://code.google.com/p/th9x
|
||||
* th9x - http://code.google.com/p/th9x
|
||||
* er9x - http://code.google.com/p/er9x
|
||||
* gruvin9x - http://code.google.com/p/gruvin9x
|
||||
*
|
||||
|
@ -20,7 +20,11 @@
|
|||
|
||||
#include "opentx.h"
|
||||
|
||||
#define LCD_CONTRAST_OFFSET 160
|
||||
#if defined(RADIO_T12)
|
||||
#define LCD_CONTRAST_OFFSET -10
|
||||
#else
|
||||
#define LCD_CONTRAST_OFFSET 160
|
||||
#endif
|
||||
#define RESET_WAIT_DELAY_MS 300 // Wait time after LCD reset before first command
|
||||
#define WAIT_FOR_DMA_END() do { } while (lcd_busy)
|
||||
|
||||
|
@ -61,9 +65,9 @@ void lcdHardwareInit()
|
|||
LCD_SPI->CR2 = 0;
|
||||
LCD_SPI->CR1 |= SPI_CR1_MSTR; // Make sure in case SSM/SSI needed to be set first
|
||||
LCD_SPI->CR1 |= SPI_CR1_SPE;
|
||||
|
||||
|
||||
LCD_NCS_HIGH();
|
||||
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = LCD_NCS_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
|
@ -81,7 +85,7 @@ void lcdHardwareInit()
|
|||
GPIO_InitStructure.GPIO_Pin = LCD_CLK_GPIO_PIN | LCD_MOSI_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_Init(LCD_SPI_GPIO, &GPIO_InitStructure);
|
||||
|
||||
|
||||
GPIO_PinAFConfig(LCD_SPI_GPIO, LCD_MOSI_GPIO_PinSource, LCD_GPIO_AF);
|
||||
GPIO_PinAFConfig(LCD_SPI_GPIO, LCD_CLK_GPIO_PinSource, LCD_GPIO_AF);
|
||||
|
||||
|
@ -103,6 +107,20 @@ void lcdHardwareInit()
|
|||
#if LCD_W == 128
|
||||
void lcdStart()
|
||||
{
|
||||
#if defined(RADIO_T12)
|
||||
// Jumper has the screen inverted.
|
||||
lcdWriteCommand(0xe2); // (14) Soft reset
|
||||
lcdWriteCommand(0xa0); // Set seg
|
||||
lcdWriteCommand(0xc8); // Set com
|
||||
lcdWriteCommand(0xf8); // Set booster
|
||||
lcdWriteCommand(0x00); // 5x
|
||||
lcdWriteCommand(0xa3); // Set bias=1/6
|
||||
lcdWriteCommand(0x22); // Set internal rb/ra=5.0
|
||||
lcdWriteCommand(0x2f); // All built-in power circuits on
|
||||
lcdWriteCommand(0x24); // Set contrast
|
||||
lcdWriteCommand(0x36); // Set Vop
|
||||
lcdWriteCommand(0xa6); // Set display mode
|
||||
#else
|
||||
lcdWriteCommand(0xe2); // (14) Soft reset
|
||||
lcdWriteCommand(0xa1); // Set seg
|
||||
lcdWriteCommand(0xc0); // Set com
|
||||
|
@ -114,6 +132,7 @@ void lcdStart()
|
|||
lcdWriteCommand(0x81); // Set contrast
|
||||
lcdWriteCommand(0x36); // Set Vop
|
||||
lcdWriteCommand(0xa6); // Set display mode
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
void lcdStart()
|
||||
|
@ -155,7 +174,7 @@ void lcdWriteAddress(uint8_t x, uint8_t y)
|
|||
{
|
||||
lcdWriteCommand(x & 0x0F); // Set Column Address LSB CA[3:0]
|
||||
lcdWriteCommand((x>>4) | 0x10); // Set Column Address MSB CA[7:4]
|
||||
|
||||
|
||||
lcdWriteCommand((y&0x0F) | 0x60); // Set Row Address LSB RA [3:0]
|
||||
lcdWriteCommand(((y>>4) & 0x0F) | 0x70); // Set Row Address MSB RA [7:4]
|
||||
}
|
||||
|
@ -181,8 +200,10 @@ void lcdRefresh(bool wait)
|
|||
for (uint8_t y=0; y < 8; y++, p+=LCD_W) {
|
||||
lcdWriteCommand(0x10); // Column addr 0
|
||||
lcdWriteCommand(0xB0 | y); // Page addr y
|
||||
#if !defined(RADIO_T12)
|
||||
lcdWriteCommand(0x04);
|
||||
|
||||
#endif
|
||||
|
||||
LCD_NCS_LOW();
|
||||
LCD_A0_HIGH();
|
||||
|
||||
|
@ -192,7 +213,7 @@ void lcdRefresh(bool wait)
|
|||
LCD_DMA_Stream->M0AR = (uint32_t)p;
|
||||
LCD_DMA_Stream->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE; // Enable DMA & TC interrupts
|
||||
LCD_SPI->CR2 |= SPI_CR2_TXDMAEN;
|
||||
|
||||
|
||||
WAIT_FOR_DMA_END();
|
||||
|
||||
LCD_NCS_HIGH();
|
||||
|
@ -204,7 +225,7 @@ void lcdRefresh(bool wait)
|
|||
lcd_busy = true;
|
||||
|
||||
lcdWriteAddress(0, 0);
|
||||
|
||||
|
||||
LCD_NCS_LOW();
|
||||
LCD_A0_HIGH();
|
||||
|
||||
|
@ -300,7 +321,7 @@ void lcdInitFinish()
|
|||
The longer initialization time seems to only be needed for regular Taranis,
|
||||
the Taranis Plus (9XE) has been tested to work without any problems at -18 deg Celsius.
|
||||
Therefore the delay for T+ is lower.
|
||||
|
||||
|
||||
If radio is reset by watchdog or boot-loader the wait is skipped, but the LCD
|
||||
is initialized in any case.
|
||||
|
||||
|
@ -316,7 +337,7 @@ void lcdInitFinish()
|
|||
delay_ms(RESET_WAIT_DELAY_MS);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
lcdStart();
|
||||
lcdWriteCommand(0xAF); // dc2=1, IC into exit SLEEP MODE, dc3=1 gray=ON, dc4=1 Green Enhanc mode disabled
|
||||
delay_ms(20); // needed for internal DC-DC converter startup
|
||||
|
@ -331,7 +352,7 @@ void lcdSetRefVolt(uint8_t val)
|
|||
#if LCD_W != 128
|
||||
WAIT_FOR_DMA_END();
|
||||
#endif
|
||||
|
||||
|
||||
lcdWriteCommand(0x81); // Set Vop
|
||||
lcdWriteCommand(val+LCD_CONTRAST_OFFSET); // 0-255
|
||||
}
|
||||
|
|
|
@ -416,6 +416,7 @@ const char STR_GLOBAL_VAR[] = TR_GLOBAL_VAR;
|
|||
const char STR_OWN[] = TR_OWN;
|
||||
const char STR_DATE[] = TR_DATE;
|
||||
const char STR_CHANNELS_MONITOR[] = TR_CHANNELS_MONITOR;
|
||||
const char STR_ROTARY_ENCODER[] = TR_ROTARY_ENCODER;
|
||||
const char STR_MIXERS_MONITOR[] = TR_MIXERS_MONITOR;
|
||||
const char STR_PATH_TOO_LONG[] = TR_PATH_TOO_LONG;
|
||||
const char STR_VIEW_TEXT[] = TR_VIEW_TEXT;
|
||||
|
|
|
@ -597,6 +597,7 @@ extern const char STR_GVARS[];
|
|||
extern const char STR_GLOBAL_VAR[];
|
||||
extern const char STR_OWN[];
|
||||
extern const char STR_DATE[];
|
||||
extern const char STR_ROTARY_ENCODER[];
|
||||
extern const char STR_CHANNELS_MONITOR[];
|
||||
extern const char STR_MIXERS_MONITOR[];
|
||||
extern const char STR_PATH_TOO_LONG[];
|
||||
|
|
|
@ -359,6 +359,9 @@
|
|||
#if defined(PCBHORUS)
|
||||
#define LEN_VKEYS "\006"
|
||||
#define TR_VKEYS "Menu\0 ""Exit\0 ""Enter\0""Nahoru""Dolů\0 ""Vpravo""Vlevo"
|
||||
#elif defined(RADIO_T12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Mínus"
|
||||
|
|
|
@ -377,14 +377,17 @@
|
|||
#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0"
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
#define LEN_VKEYS "\006"
|
||||
#define TR_VKEYS "Menu\0 ""Exit\0 ""Enter\0""Up\0 ""Down\0 ""Right\0""Left"
|
||||
#define LEN_VKEYS "\006"
|
||||
#define TR_VKEYS "Menu\0 ""Exit\0 ""Enter\0""Up\0 ""Down\0 ""Right\0""Left"
|
||||
#elif defined(RADIO_T12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
#else
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0"
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0"
|
||||
#endif
|
||||
|
||||
#define LEN_VRENCODERS "\003"
|
||||
|
|
|
@ -365,6 +365,9 @@
|
|||
#elif defined(PCBXLITE)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Shift""Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(RADIO_T12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
|
@ -884,7 +887,7 @@
|
|||
#define TR_OWN "Own"
|
||||
#define TR_DATE "Date"
|
||||
#define TR_MONTHS { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }
|
||||
#define TR_ROTARY_ENCODER "R.Encs"
|
||||
#define TR_ROTARY_ENCODER "R.E."
|
||||
#define TR_CHANNELS_MONITOR "CHANNELS MONITOR"
|
||||
#define TR_MIXERS_MONITOR "MIXERS MONITOR"
|
||||
#define TR_PATH_TOO_LONG "Path too long"
|
||||
|
|
|
@ -374,8 +374,22 @@
|
|||
#define LEN_VSWASHTYPE "\004"
|
||||
#define TR_VSWASHTYPE "---\0""120\0""120X""140\0""90\0"
|
||||
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS TR("Menu\0""Salir""Abajo""Arrib""Dcha.""Izqd.", "Menu\0""Salir""Enter""Pgna.""Mas\0 ""Menos")
|
||||
#if defined(PCBHORUS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Up\0 ""Down\0""Right""Left\0"
|
||||
#elif defined(PCBXLITE)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Shift""Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(RADIO_T12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
#else
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0"
|
||||
#endif
|
||||
|
||||
#define LEN_VRENCODERS "\003"
|
||||
#define TR_VRENCODERS "REa""REb"
|
||||
|
@ -893,7 +907,7 @@
|
|||
#define TR_OWN "Propio"
|
||||
#define TR_DATE "Fecha"
|
||||
#define TR_MONTHS { "Jan", "Fev", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }
|
||||
#define TR_ROTARY_ENCODER "R.Encs"
|
||||
#define TR_ROTARY_ENCODER "R.E."
|
||||
#define TR_CHANNELS_MONITOR "MONITOR CANALES"
|
||||
#define TR_MIXERS_MONITOR "MIXERS MONITOR"
|
||||
#define TR_PATH_TOO_LONG "Path too long"
|
||||
|
|
|
@ -374,8 +374,22 @@
|
|||
#define LEN_VSWASHTYPE "\004"
|
||||
#define TR_VSWASHTYPE "---\0""120\0""120X""140\0""90\0"
|
||||
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS TR("Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0", "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus")
|
||||
#if defined(PCBHORUS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Up\0 ""Down\0""Right""Left\0"
|
||||
#elif defined(PCBXLITE)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Shift""Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(RADIO_T12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
#else
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0"
|
||||
#endif
|
||||
|
||||
#define LEN_VRENCODERS "\003"
|
||||
#define TR_VRENCODERS "REa""REb"
|
||||
|
@ -886,7 +900,7 @@
|
|||
#define TR_OWN "Own"
|
||||
#define TR_DATE "Date"
|
||||
#define TR_MONTHS { "Jan", "Fev", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }
|
||||
#define TR_ROTARY_ENCODER "R.Encs"
|
||||
#define TR_ROTARY_ENCODER "R.E."
|
||||
#define TR_CHANNELS_MONITOR "CHANNELS MONITOR"
|
||||
#define TR_MIXERS_MONITOR "MIXERS MONITOR"
|
||||
#define TR_PATH_TOO_LONG "Path too long"
|
||||
|
|
|
@ -382,6 +382,9 @@
|
|||
#elif defined(PCBXLITE)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Shift""Exit\0""Enter""Bas\0 ""Haut\0""Droit""Gauch"
|
||||
#elif defined(RADIO_T12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Moins"
|
||||
|
|
|
@ -376,8 +376,22 @@
|
|||
#define LEN_VSWASHTYPE "\004"
|
||||
#define TR_VSWASHTYPE "---\0""120\0""120X""140\0""90\0"
|
||||
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS TR("Menù\0""EXIT\0""DN\0 ""UP\0 ""SX\0 ""DX\0 ", "Menu\0""Esci\0""Enter""Pag.\0""Più\0 ""Meno")
|
||||
#if defined(PCBHORUS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Up\0 ""Down\0""Right""Left\0"
|
||||
#elif defined(PCBXLITE)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Shift""Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(RADIO_T12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
#else
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0"
|
||||
#endif
|
||||
|
||||
#define LEN_VRENCODERS "\003"
|
||||
#define TR_VRENCODERS "REa""REb"
|
||||
|
@ -887,7 +901,7 @@
|
|||
#define TR_OWN "Fase"
|
||||
#define TR_DATE "Data"
|
||||
#define TR_MONTHS { "Jan", "Fev", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }
|
||||
#define TR_ROTARY_ENCODER "R.Encs"
|
||||
#define TR_ROTARY_ENCODER "R.E."
|
||||
#define TR_CHANNELS_MONITOR "MONITOR CANALI"
|
||||
#define TR_MIXERS_MONITOR "MONITOR MIXER"
|
||||
#define TR_PATH_TOO_LONG "Path troppo lungo"
|
||||
|
|
|
@ -362,14 +362,17 @@
|
|||
#define TR_VSWASHTYPE "---\0""120\0""120X""140\0""90\0"
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
#define LEN_VKEYS "\006"
|
||||
#define TR_VKEYS "Menu\0 ""Exit\0 ""Enter\0""Up\0 ""Down\0 ""Right\0""Left"
|
||||
#define LEN_VKEYS "\006"
|
||||
#define TR_VKEYS "Menu\0 ""Exit\0 ""Enter\0""Up\0 ""Down\0 ""Right\0""Left"
|
||||
#elif defined(RADIO_T12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
#else
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0"
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0"
|
||||
#endif
|
||||
|
||||
#define LEN_VRENCODERS "\003"
|
||||
|
|
|
@ -377,8 +377,22 @@
|
|||
#define LEN_VSWASHTYPE "\004"
|
||||
#define TR_VSWASHTYPE "---\0""120\0""120X""140\0""90\0"
|
||||
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS TR("Menu\0""Exit\0""Dół \0""Góra\0""Prawo""Lewo\0", "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus")
|
||||
#if defined(PCBHORUS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Up\0 ""Down\0""Right""Left\0"
|
||||
#elif defined(PCBXLITE)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Shift""Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(RADIO_T12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
#else
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Down\0""Up\0 ""Right""Left\0"
|
||||
#endif
|
||||
|
||||
#define LEN_VRENCODERS "\003"
|
||||
#define TR_VRENCODERS "REa""REb"
|
||||
|
@ -887,7 +901,7 @@
|
|||
#define TR_OWN "Własność"
|
||||
#define TR_DATE "Data"
|
||||
#define TR_MONTHS { "Jan", "Fev", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }
|
||||
#define TR_ROTARY_ENCODER "R.Encs"
|
||||
#define TR_ROTARY_ENCODER "R.E."
|
||||
#define TR_CHANNELS_MONITOR "MONITOR KANAŁÓW"
|
||||
#define TR_MIXERS_MONITOR "MONITOR MIKSER"
|
||||
#define TR_PATH_TOO_LONG "Ścieżka za długa"
|
||||
|
|
|
@ -891,7 +891,7 @@
|
|||
#define TR_OWN "Propr."
|
||||
#define TR_DATE "Data"
|
||||
#define TR_MONTHS { "Jan", "Fev", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }
|
||||
#define TR_ROTARY_ENCODER "R.Encs"
|
||||
#define TR_ROTARY_ENCODER "R.E."
|
||||
#define TR_CHANNELS_MONITOR "CHANNELS MONITOR"
|
||||
#define TR_MIXERS_MONITOR "MIXERS MONITOR"
|
||||
#define TR_PATH_TOO_LONG "Path too long"
|
||||
|
|
|
@ -375,14 +375,17 @@
|
|||
#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0 "
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
#define LEN_VKEYS "\006"
|
||||
#define TR_VKEYS "Menu\0 ""Exit\0 ""Enter\0""Upp\0 ""Ned\0 ""Höger\0""Vänst"
|
||||
#define LEN_VKEYS "\006"
|
||||
#define TR_VKEYS "Menu\0 ""Exit\0 ""Enter\0""Upp\0 ""Ned\0 ""Höger\0""Vänst"
|
||||
#elif defined(RADIO_T12)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||
#elif defined(PCBTARANIS)
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||
#else
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Ned\0 ""Upp\0 ""Höger""Vänst"
|
||||
#define LEN_VKEYS "\005"
|
||||
#define TR_VKEYS "Menu\0""Exit\0""Ned\0 ""Upp\0 ""Höger""Vänst"
|
||||
#endif
|
||||
|
||||
#define LEN_VRENCODERS "\003"
|
||||
|
|
|
@ -44,9 +44,12 @@
|
|||
#elif defined(PCBXLITE)
|
||||
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0"
|
||||
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0"
|
||||
#elif defined(PCBX7)
|
||||
#elif defined(RADIO_X7)
|
||||
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0"
|
||||
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SF\0""\312SH\0""\312SI\0""\312SJ\0"
|
||||
#elif defined(RADIO_T12)
|
||||
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0"
|
||||
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SG\0""\312SH\0""\312SI\0""\312SJ\0"
|
||||
#elif defined(PCBX9LITE)
|
||||
#define TR_POTS_VSRCRAW "\310S1\0"
|
||||
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0"
|
||||
|
|
|
@ -121,6 +121,14 @@ elif options[optcount] == "x12s":
|
|||
maxsize = 2 * 1024 * 1024
|
||||
board = BOARD_HORUS
|
||||
board_family = BOARD_FAMILY_ARM
|
||||
elif options[optcount] == "t12":
|
||||
command_options["PCB"] = "X7"
|
||||
command_options["PCBREV"] = "T12"
|
||||
command_options["MULTI_SPORT"] = "ON"
|
||||
firmware_options = options_taranis_x9dp
|
||||
maxsize = 65536 * 8
|
||||
board = BOARD_TARANIS
|
||||
board_family = BOARD_FAMILY_ARM
|
||||
else:
|
||||
exit(INVALID_BOARD)
|
||||
|
||||
|
|
|
@ -177,6 +177,15 @@ if [[ " X12S HORUS ALL " =~ " ${FLAVOR} " ]] ; then
|
|||
make -j${CORES} gtests ; ./gtests ${TEST_OPTIONS}
|
||||
fi
|
||||
|
||||
if [[ " T12 ALL " =~ " ${FLAVOR} " ]] ; then
|
||||
# OpenTX on T12
|
||||
rm -rf *
|
||||
cmake ${COMMON_OPTIONS} -DPCB=X7 -DPCBREV=T12 -DHELI=YES -DGVARS=YES ${SRCDIR}
|
||||
make -j${CORES} ${FIRMARE_TARGET}
|
||||
make -j${CORES} libsimulator
|
||||
make -j${CORES} gtests ; ./gtests ${TEST_OPTIONS}
|
||||
fi
|
||||
|
||||
if [[ " DEFAULT ALL " =~ " ${FLAVOR} " ]] ; then
|
||||
# Companion
|
||||
rm -rf *
|
||||
|
|