3djc/2.4 add 2.3 pr (#8099)
|
@ -343,6 +343,8 @@ if(PCB STREQUAL X7 AND PCBREV STREQUAL ACCESS)
|
||||||
set(FLAVOUR x7access)
|
set(FLAVOUR x7access)
|
||||||
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T12)
|
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL T12)
|
||||||
set(FLAVOUR t12)
|
set(FLAVOUR t12)
|
||||||
|
elseif(PCB STREQUAL X7 AND PCBREV STREQUAL TX12)
|
||||||
|
set(FLAVOUR tx12)
|
||||||
elseif(PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019)
|
elseif(PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019)
|
||||||
set(FLAVOUR x9d+2019)
|
set(FLAVOUR x9d+2019)
|
||||||
elseif(PCB STREQUAL X10 AND PCBREV STREQUAL EXPRESS)
|
elseif(PCB STREQUAL X10 AND PCBREV STREQUAL EXPRESS)
|
||||||
|
|
|
@ -179,6 +179,17 @@
|
||||||
<file>images/simulator/JumperT12/JumperT12-x.png</file>
|
<file>images/simulator/JumperT12/JumperT12-x.png</file>
|
||||||
<file>images/simulator/JumperT12/JumperT12-center.png</file>
|
<file>images/simulator/JumperT12/JumperT12-center.png</file>
|
||||||
<file>images/simulator/JumperT12/JumperT12-top.png</file>
|
<file>images/simulator/JumperT12/JumperT12-top.png</file>
|
||||||
|
<file>images/simulator/TX12/left.png</file>
|
||||||
|
<file>images/simulator/TX12/left-pageup.png</file>
|
||||||
|
<file>images/simulator/TX12/left-pagedn.png</file>
|
||||||
|
<file>images/simulator/TX12/left-rtn.png</file>
|
||||||
|
<file>images/simulator/TX12/left-sys.png</file>
|
||||||
|
<file>images/simulator/TX12/left-tele.png</file>
|
||||||
|
<file>images/simulator/TX12/right.png</file>
|
||||||
|
<file>images/simulator/TX12/right-ent.png</file>
|
||||||
|
<file>images/simulator/TX12/right-mdl.png</file>
|
||||||
|
<file>images/simulator/TX12/bottom.png</file>
|
||||||
|
<file>images/simulator/TX12/top.png</file>
|
||||||
<file>images/simulator/JumperT16/left.png</file>
|
<file>images/simulator/JumperT16/left.png</file>
|
||||||
<file>images/simulator/JumperT16/right.png</file>
|
<file>images/simulator/JumperT16/right.png</file>
|
||||||
<file>images/simulator/JumperT16/top.png</file>
|
<file>images/simulator/JumperT16/top.png</file>
|
||||||
|
|
|
@ -85,6 +85,8 @@ uint32_t Boards::getFourCC(Type board)
|
||||||
return 0x4078746F;
|
return 0x4078746F;
|
||||||
case BOARD_RADIOMASTER_TX16S:
|
case BOARD_RADIOMASTER_TX16S:
|
||||||
return 0x3878746F;
|
return 0x3878746F;
|
||||||
|
case BOARD_RADIOMASTER_TX12:
|
||||||
|
return 0x4178746F;
|
||||||
case BOARD_UNKNOWN:
|
case BOARD_UNKNOWN:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -111,6 +113,7 @@ int Boards::getEEpromSize(Board::Type board)
|
||||||
case BOARD_TARANIS_X9DP_2019:
|
case BOARD_TARANIS_X9DP_2019:
|
||||||
case BOARD_TARANIS_X9E:
|
case BOARD_TARANIS_X9E:
|
||||||
case BOARD_JUMPER_T12:
|
case BOARD_JUMPER_T12:
|
||||||
|
case BOARD_RADIOMASTER_TX12:
|
||||||
return EESIZE_TARANIS;
|
return EESIZE_TARANIS;
|
||||||
case BOARD_UNKNOWN:
|
case BOARD_UNKNOWN:
|
||||||
return EESIZE_MAX;
|
return EESIZE_MAX;
|
||||||
|
@ -145,6 +148,7 @@ int Boards::getFlashSize(Type board)
|
||||||
case BOARD_TARANIS_X9DP_2019:
|
case BOARD_TARANIS_X9DP_2019:
|
||||||
case BOARD_TARANIS_X9E:
|
case BOARD_TARANIS_X9E:
|
||||||
case BOARD_JUMPER_T12:
|
case BOARD_JUMPER_T12:
|
||||||
|
case BOARD_RADIOMASTER_TX12:
|
||||||
return FSIZE_TARANIS;
|
return FSIZE_TARANIS;
|
||||||
case BOARD_HORUS_X12S:
|
case BOARD_HORUS_X12S:
|
||||||
case BOARD_X10:
|
case BOARD_X10:
|
||||||
|
@ -201,6 +205,20 @@ SwitchInfo Boards::getSwitchInfo(Board::Type board, int index)
|
||||||
if (index < DIM(switches))
|
if (index < DIM(switches))
|
||||||
return switches[index];
|
return switches[index];
|
||||||
}
|
}
|
||||||
|
else if (IS_RADIOMASTER_TX12(board)) {
|
||||||
|
const Board::SwitchInfo switches[] = {
|
||||||
|
{SWITCH_TOGGLE, "SA"},
|
||||||
|
{SWITCH_3POS, "SB"},
|
||||||
|
{SWITCH_3POS, "SC"},
|
||||||
|
{SWITCH_TOGGLE, "SD"},
|
||||||
|
{SWITCH_3POS, "SE"},
|
||||||
|
{SWITCH_3POS, "SF"},
|
||||||
|
{SWITCH_2POS, "SI"},
|
||||||
|
{SWITCH_2POS, "SJ"}
|
||||||
|
};
|
||||||
|
if (index < DIM(switches))
|
||||||
|
return switches[index];
|
||||||
|
}
|
||||||
else if (IS_JUMPER_T12(board)) {
|
else if (IS_JUMPER_T12(board)) {
|
||||||
const Board::SwitchInfo switches[] = {
|
const Board::SwitchInfo switches[] = {
|
||||||
{SWITCH_3POS, "SA"},
|
{SWITCH_3POS, "SA"},
|
||||||
|
@ -213,7 +231,23 @@ SwitchInfo Boards::getSwitchInfo(Board::Type board, int index)
|
||||||
if (index < DIM(switches))
|
if (index < DIM(switches))
|
||||||
return switches[index];
|
return switches[index];
|
||||||
}
|
}
|
||||||
else if (IS_HORUS_OR_TARANIS(board)) {
|
else if (IS_FAMILY_HORUS_OR_T16(board)) {
|
||||||
|
const Board::SwitchInfo switches[] = {
|
||||||
|
{SWITCH_3POS, "SA"},
|
||||||
|
{SWITCH_3POS, "SB"},
|
||||||
|
{SWITCH_3POS, "SC"},
|
||||||
|
{SWITCH_3POS, "SD"},
|
||||||
|
{SWITCH_3POS, "SE"},
|
||||||
|
{SWITCH_2POS, "SF"},
|
||||||
|
{SWITCH_3POS, "SG"},
|
||||||
|
{SWITCH_TOGGLE, "SH"},
|
||||||
|
{SWITCH_2POS, "SI"},
|
||||||
|
{SWITCH_2POS, "SJ"}
|
||||||
|
};
|
||||||
|
if (index < DIM(switches))
|
||||||
|
return switches[index];
|
||||||
|
}
|
||||||
|
else if (IS_TARANIS(board)) {
|
||||||
const Board::SwitchInfo switches[] = {
|
const Board::SwitchInfo switches[] = {
|
||||||
{SWITCH_3POS, "SA"},
|
{SWITCH_3POS, "SA"},
|
||||||
{SWITCH_3POS, "SB"},
|
{SWITCH_3POS, "SB"},
|
||||||
|
@ -263,7 +297,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
|
||||||
case Pots:
|
case Pots:
|
||||||
if (IS_TARANIS_X9LITE(board))
|
if (IS_TARANIS_X9LITE(board))
|
||||||
return 1;
|
return 1;
|
||||||
else if (IS_TARANIS_SMALL(board) || IS_JUMPER_T12(board))
|
else if (IS_TARANIS_SMALL(board))
|
||||||
return 2;
|
return 2;
|
||||||
else if (IS_TARANIS_X9E(board))
|
else if (IS_TARANIS_X9E(board))
|
||||||
return 4;
|
return 4;
|
||||||
|
@ -318,8 +352,8 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
|
||||||
return 7;
|
return 7;
|
||||||
else if (IS_TARANIS_X7(board))
|
else if (IS_TARANIS_X7(board))
|
||||||
return 8;
|
return 8;
|
||||||
else if (IS_JUMPER_T12(board))
|
else if (IS_FAMILY_T12(board))
|
||||||
return 6;
|
return 8;
|
||||||
else if (IS_TARANIS_XLITE(board))
|
else if (IS_TARANIS_XLITE(board))
|
||||||
return 6;
|
return 6;
|
||||||
else if (board == Board::BOARD_TARANIS_X9DP_2019)
|
else if (board == Board::BOARD_TARANIS_X9DP_2019)
|
||||||
|
@ -334,6 +368,8 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
|
||||||
case FactoryInstalledSwitches:
|
case FactoryInstalledSwitches:
|
||||||
if (IS_TARANIS_X9E(board))
|
if (IS_TARANIS_X9E(board))
|
||||||
return 8;
|
return 8;
|
||||||
|
if (IS_FAMILY_T12(board))
|
||||||
|
return 6;
|
||||||
if (IS_HORUS_X12S(board))
|
if (IS_HORUS_X12S(board))
|
||||||
return 8;
|
return 8;
|
||||||
else
|
else
|
||||||
|
@ -515,6 +551,8 @@ QString Boards::getBoardName(Board::Type board)
|
||||||
return "Jumper T18";
|
return "Jumper T18";
|
||||||
case BOARD_RADIOMASTER_TX16S:
|
case BOARD_RADIOMASTER_TX16S:
|
||||||
return "Radiomaster TX16S";
|
return "Radiomaster TX16S";
|
||||||
|
case BOARD_RADIOMASTER_TX12:
|
||||||
|
return "Radiomaster TX12";
|
||||||
default:
|
default:
|
||||||
return tr("Unknown");
|
return tr("Unknown");
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,9 +52,10 @@ namespace Board {
|
||||||
BOARD_JUMPER_T16,
|
BOARD_JUMPER_T16,
|
||||||
BOARD_RADIOMASTER_TX16S,
|
BOARD_RADIOMASTER_TX16S,
|
||||||
BOARD_JUMPER_T18,
|
BOARD_JUMPER_T18,
|
||||||
|
BOARD_RADIOMASTER_TX12,
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr int BOARD_TYPE_MAX = BOARD_JUMPER_T18;
|
constexpr int BOARD_TYPE_MAX = BOARD_RADIOMASTER_TX12;
|
||||||
|
|
||||||
enum PotType
|
enum PotType
|
||||||
{
|
{
|
||||||
|
@ -218,11 +219,21 @@ inline bool IS_RADIOMASTER_TX16S(Board::Type board)
|
||||||
return board == Board::BOARD_RADIOMASTER_TX16S;
|
return board == Board::BOARD_RADIOMASTER_TX16S;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool IS_RADIOMASTER_TX12(Board::Type board)
|
||||||
|
{
|
||||||
|
return board == Board::BOARD_RADIOMASTER_TX12;
|
||||||
|
}
|
||||||
|
|
||||||
inline bool IS_FAMILY_T16(Board::Type board)
|
inline bool IS_FAMILY_T16(Board::Type board)
|
||||||
{
|
{
|
||||||
return board == Board::BOARD_JUMPER_T16 || board == Board::BOARD_RADIOMASTER_TX16S || board == Board::BOARD_JUMPER_T18;
|
return board == Board::BOARD_JUMPER_T16 || board == Board::BOARD_RADIOMASTER_TX16S || board == Board::BOARD_JUMPER_T18;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool IS_FAMILY_T12(Board::Type board)
|
||||||
|
{
|
||||||
|
return board == Board::BOARD_JUMPER_T12 || board == Board::BOARD_RADIOMASTER_TX12;
|
||||||
|
}
|
||||||
|
|
||||||
inline bool IS_TARANIS_XLITE(Board::Type board)
|
inline bool IS_TARANIS_XLITE(Board::Type board)
|
||||||
{
|
{
|
||||||
return board == Board::BOARD_TARANIS_XLITE || board == Board::BOARD_TARANIS_XLITES;
|
return board == Board::BOARD_TARANIS_XLITE || board == Board::BOARD_TARANIS_XLITES;
|
||||||
|
@ -273,14 +284,14 @@ inline bool IS_TARANIS_X9E(Board::Type board)
|
||||||
return board == Board::BOARD_TARANIS_X9E;
|
return board == Board::BOARD_TARANIS_X9E;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool IS_TARANIS(Board::Type board)
|
|
||||||
{
|
|
||||||
return IS_TARANIS_X9(board) || IS_TARANIS_X7(board) || IS_TARANIS_X9LITE(board) || IS_TARANIS_XLITE(board) || IS_JUMPER_T12(board);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool IS_TARANIS_SMALL(Board::Type board)
|
inline bool IS_TARANIS_SMALL(Board::Type board)
|
||||||
{
|
{
|
||||||
return IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board) || IS_JUMPER_T12(board);
|
return IS_TARANIS_X7(board) || IS_TARANIS_XLITE(board) || IS_TARANIS_X9LITE(board) || IS_FAMILY_T12(board);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool IS_TARANIS(Board::Type board)
|
||||||
|
{
|
||||||
|
return IS_TARANIS_X9(board) || IS_TARANIS_SMALL(board);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool IS_HORUS_X10(Board::Type board)
|
inline bool IS_HORUS_X10(Board::Type board)
|
||||||
|
|
|
@ -253,11 +253,11 @@ void GeneralSettings::setDefaultControlTypes(Board::Type board)
|
||||||
potConfig[0] = Board::POT_WITHOUT_DETENT;
|
potConfig[0] = Board::POT_WITHOUT_DETENT;
|
||||||
potConfig[1] = Board::POT_WITH_DETENT;
|
potConfig[1] = Board::POT_WITH_DETENT;
|
||||||
}
|
}
|
||||||
else if (IS_TARANIS(board)) {
|
else if (IS_FAMILY_T12(board)) {
|
||||||
potConfig[0] = Board::POT_WITH_DETENT;
|
potConfig[0] = Board::POT_WITH_DETENT;
|
||||||
potConfig[1] = Board::POT_WITH_DETENT;
|
potConfig[1] = Board::POT_WITH_DETENT;
|
||||||
}
|
}
|
||||||
else if (IS_JUMPER_T12(board)) {
|
else if (IS_TARANIS(board)) {
|
||||||
potConfig[0] = Board::POT_WITH_DETENT;
|
potConfig[0] = Board::POT_WITH_DETENT;
|
||||||
potConfig[1] = Board::POT_WITH_DETENT;
|
potConfig[1] = Board::POT_WITH_DETENT;
|
||||||
}
|
}
|
||||||
|
@ -329,14 +329,14 @@ void GeneralSettings::convert(RadioDataConversionState & cstate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_JUMPER_T12(cstate.toType)) {
|
if (IS_FAMILY_T12(cstate.toType)) {
|
||||||
if (IS_TARANIS_X9(cstate.fromType) || IS_FAMILY_HORUS_OR_T16(cstate.fromType)) {
|
if (IS_TARANIS_X9(cstate.fromType) || IS_FAMILY_HORUS_OR_T16(cstate.fromType)) {
|
||||||
strncpy(switchName[4], switchName[5], sizeof(switchName[0]));
|
strncpy(switchName[4], switchName[5], sizeof(switchName[0]));
|
||||||
strncpy(switchName[5], switchName[7], sizeof(switchName[0]));
|
strncpy(switchName[5], switchName[7], sizeof(switchName[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (IS_JUMPER_T12(cstate.fromType)) {
|
else if (IS_FAMILY_T12(cstate.fromType)) {
|
||||||
if (IS_TARANIS_X9(cstate.toType) || IS_FAMILY_HORUS_OR_T16(cstate.toType)) {
|
if (IS_TARANIS_X9(cstate.toType) || IS_FAMILY_HORUS_OR_T16(cstate.toType)) {
|
||||||
strncpy(switchName[5], switchName[4], sizeof(switchName[0]));
|
strncpy(switchName[5], switchName[4], sizeof(switchName[0]));
|
||||||
strncpy(switchName[7], switchName[5], sizeof(switchName[0]));
|
strncpy(switchName[7], switchName[5], sizeof(switchName[0]));
|
||||||
|
|
|
@ -45,7 +45,7 @@ inline int MAX_SWITCHES(Board::Type board, int version)
|
||||||
if (IS_TARANIS_X9D(board))
|
if (IS_TARANIS_X9D(board))
|
||||||
return 9;
|
return 9;
|
||||||
|
|
||||||
if (IS_JUMPER_T12(board))
|
if (IS_FAMILY_T12(board))
|
||||||
return 8;
|
return 8;
|
||||||
|
|
||||||
return Boards::getCapability(board, Board::Switches);
|
return Boards::getCapability(board, Board::Switches);
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#define TARANIS_X9LITE_VARIANT 0x0800
|
#define TARANIS_X9LITE_VARIANT 0x0800
|
||||||
#define TARANIS_X9LITES_VARIANT 0x0801
|
#define TARANIS_X9LITES_VARIANT 0x0801
|
||||||
#define JUMPER_T12_VARIANT 0x4001
|
#define JUMPER_T12_VARIANT 0x4001
|
||||||
|
#define RADIOMASTER_TX12_VARIANT 0x4002
|
||||||
|
|
||||||
class OpenTxGeneralData: public TransformedField {
|
class OpenTxGeneralData: public TransformedField {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -66,6 +66,8 @@ const char * OpenTxEepromInterface::getName()
|
||||||
return "OpenTX for Jumper T18";
|
return "OpenTX for Jumper T18";
|
||||||
case BOARD_RADIOMASTER_TX16S:
|
case BOARD_RADIOMASTER_TX16S:
|
||||||
return "OpenTX for Radiomaster TX16S";
|
return "OpenTX for Radiomaster TX16S";
|
||||||
|
case BOARD_RADIOMASTER_TX12:
|
||||||
|
return "OpenTX for Radiomaster TX12";
|
||||||
case BOARD_TARANIS_X9D:
|
case BOARD_TARANIS_X9D:
|
||||||
return "OpenTX for FrSky Taranis X9D";
|
return "OpenTX for FrSky Taranis X9D";
|
||||||
case BOARD_TARANIS_X9DP:
|
case BOARD_TARANIS_X9DP:
|
||||||
|
@ -334,7 +336,9 @@ int OpenTxEepromInterface::save(uint8_t * eeprom, const RadioData & radioData, u
|
||||||
else if (IS_JUMPER_T12(board)) {
|
else if (IS_JUMPER_T12(board)) {
|
||||||
variant |= JUMPER_T12_VARIANT;
|
variant |= JUMPER_T12_VARIANT;
|
||||||
}
|
}
|
||||||
|
else if (IS_RADIOMASTER_TX12(board)) {
|
||||||
|
variant |= RADIOMASTER_TX12_VARIANT;
|
||||||
|
}
|
||||||
OpenTxGeneralData generator((GeneralSettings &)radioData.generalSettings, board, version, variant);
|
OpenTxGeneralData generator((GeneralSettings &)radioData.generalSettings, board, version, variant);
|
||||||
// generator.dump();
|
// generator.dump();
|
||||||
QByteArray data;
|
QByteArray data;
|
||||||
|
@ -520,7 +524,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
||||||
case MaxVolume:
|
case MaxVolume:
|
||||||
return 23;
|
return 23;
|
||||||
case MaxContrast:
|
case MaxContrast:
|
||||||
if (IS_TARANIS_SMALL(board) || IS_JUMPER_T12(board))
|
if (IS_TARANIS_SMALL(board))
|
||||||
return 30;
|
return 30;
|
||||||
else
|
else
|
||||||
return 45;
|
return 45;
|
||||||
|
@ -615,7 +619,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
||||||
case LcdWidth:
|
case LcdWidth:
|
||||||
if (IS_FAMILY_HORUS_OR_T16(board))
|
if (IS_FAMILY_HORUS_OR_T16(board))
|
||||||
return 480;
|
return 480;
|
||||||
else if (IS_TARANIS_SMALL(board) || IS_JUMPER_T12(board))
|
else if (IS_TARANIS_SMALL(board))
|
||||||
return 128;
|
return 128;
|
||||||
else if (IS_TARANIS(board))
|
else if (IS_TARANIS(board))
|
||||||
return 212;
|
return 212;
|
||||||
|
@ -629,7 +633,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
||||||
case LcdDepth:
|
case LcdDepth:
|
||||||
if (IS_FAMILY_HORUS_OR_T16(board))
|
if (IS_FAMILY_HORUS_OR_T16(board))
|
||||||
return 16;
|
return 16;
|
||||||
else if (IS_TARANIS_SMALL(board) || IS_JUMPER_T12(board))
|
else if (IS_TARANIS_SMALL(board))
|
||||||
return 1;
|
return 1;
|
||||||
else if (IS_TARANIS(board))
|
else if (IS_TARANIS(board))
|
||||||
return 4;
|
return 4;
|
||||||
|
@ -679,6 +683,8 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
||||||
return TARANIS_XLITE_VARIANT;
|
return TARANIS_XLITE_VARIANT;
|
||||||
else if (IS_JUMPER_T12(board))
|
else if (IS_JUMPER_T12(board))
|
||||||
return JUMPER_T12_VARIANT;
|
return JUMPER_T12_VARIANT;
|
||||||
|
else if (IS_RADIOMASTER_TX12(board))
|
||||||
|
return RADIOMASTER_TX12_VARIANT;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
case MavlinkTelemetry:
|
case MavlinkTelemetry:
|
||||||
|
@ -733,9 +739,9 @@ bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port)
|
||||||
return true;
|
return true;
|
||||||
case PULSES_PXX_XJT_X16:
|
case PULSES_PXX_XJT_X16:
|
||||||
case PULSES_PXX_XJT_LR12:
|
case PULSES_PXX_XJT_LR12:
|
||||||
return !IS_ACCESS_RADIO(board, id) && !IS_FAMILY_T16(board) && !IS_JUMPER_T12(board);
|
return !IS_ACCESS_RADIO(board, id) && !IS_FAMILY_T16(board) && !IS_FAMILY_T12(board);
|
||||||
case PULSES_PXX_XJT_D8:
|
case PULSES_PXX_XJT_D8:
|
||||||
return !(IS_ACCESS_RADIO(board, id) || id.contains("eu")) && !IS_FAMILY_T16(board) && !IS_JUMPER_T12(board);
|
return !(IS_ACCESS_RADIO(board, id) || id.contains("eu")) && !IS_FAMILY_T16(board) && !IS_FAMILY_T12(board);
|
||||||
case PULSES_ACCESS_ISRM:
|
case PULSES_ACCESS_ISRM:
|
||||||
case PULSES_ACCST_ISRM_D16:
|
case PULSES_ACCST_ISRM_D16:
|
||||||
return IS_ACCESS_RADIO(board, id);
|
return IS_ACCESS_RADIO(board, id);
|
||||||
|
@ -943,6 +949,11 @@ bool OpenTxEepromInterface::checkVariant(unsigned int version, unsigned int vari
|
||||||
variantError = true;
|
variantError = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (IS_RADIOMASTER_TX12(board)) {
|
||||||
|
if (variant != RADIOMASTER_TX12_VARIANT) {
|
||||||
|
variantError = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (IS_TARANIS(board)) {
|
else if (IS_TARANIS(board)) {
|
||||||
if (variant != 0) {
|
if (variant != 0) {
|
||||||
variantError = true;
|
variantError = true;
|
||||||
|
@ -1273,6 +1284,16 @@ void registerOpenTxFirmwares()
|
||||||
addOpenTxRfOptions(firmware, FLEX);
|
addOpenTxRfOptions(firmware, FLEX);
|
||||||
registerOpenTxFirmware(firmware);
|
registerOpenTxFirmware(firmware);
|
||||||
|
|
||||||
|
/* Radiomaster TX12 board */
|
||||||
|
firmware = new OpenTxFirmware("opentx-tx12", QCoreApplication::translate("Firmware", "Radiomaster TX12"), BOARD_RADIOMASTER_TX12);
|
||||||
|
addOpenTxCommonOptions(firmware);
|
||||||
|
firmware->addOption("noheli", Firmware::tr("Disable HELI menu and cyclic mix support"));
|
||||||
|
firmware->addOption("nogvars", Firmware::tr("Disable Global variables"));
|
||||||
|
firmware->addOption("lua", Firmware::tr("Enable Lua custom scripts screen"));
|
||||||
|
addOpenTxFontOptions(firmware);
|
||||||
|
registerOpenTxFirmware(firmware);
|
||||||
|
addOpenTxRfOptions(firmware, FLEX + AFHDS3);
|
||||||
|
|
||||||
/* Radiomaster TX16S board */
|
/* Radiomaster TX16S board */
|
||||||
firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16S / SE / Hall / Masterfire"), BOARD_RADIOMASTER_TX16S);
|
firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16S / SE / Hall / Masterfire"), BOARD_RADIOMASTER_TX16S);
|
||||||
addOpenTxFrskyOptions(firmware);
|
addOpenTxFrskyOptions(firmware);
|
||||||
|
|
|
@ -364,7 +364,7 @@ RawSource RawSource::convert(RadioDataConversionState & cstate)
|
||||||
if (index >= 0)
|
if (index >= 0)
|
||||||
evt = RadioDataConversionState::EVT_CVRT;
|
evt = RadioDataConversionState::EVT_CVRT;
|
||||||
}
|
}
|
||||||
else if (IS_JUMPER_T12(cstate.toType) && (IS_TARANIS_X9(cstate.fromType) || IS_FAMILY_HORUS_OR_T16(cstate.fromType))) {
|
else if (IS_FAMILY_T12(cstate.toType) && (IS_TARANIS_X9(cstate.fromType) || IS_FAMILY_HORUS_OR_T16(cstate.fromType))) {
|
||||||
// No SE and SG on T12 board
|
// No SE and SG on T12 board
|
||||||
index = toSwitchList.indexOf("SD");
|
index = toSwitchList.indexOf("SD");
|
||||||
if (index >= 0)
|
if (index >= 0)
|
||||||
|
|
|
@ -200,7 +200,7 @@ RawSwitch RawSwitch::convert(RadioDataConversionState & cstate)
|
||||||
if (newIdx >= 0)
|
if (newIdx >= 0)
|
||||||
evt = RadioDataConversionState::EVT_CVRT;
|
evt = RadioDataConversionState::EVT_CVRT;
|
||||||
}
|
}
|
||||||
else if (IS_JUMPER_T12(cstate.toType) && (IS_TARANIS_X9(cstate.fromType) || IS_FAMILY_HORUS_OR_T16(cstate.fromType))) {
|
else if (IS_FAMILY_T12(cstate.toType) && (IS_TARANIS_X9(cstate.fromType) || IS_FAMILY_HORUS_OR_T16(cstate.fromType))) {
|
||||||
// No SE and SG on T12 board
|
// No SE and SG on T12 board
|
||||||
newIdx = toSwitchList.indexOf("SD");
|
newIdx = toSwitchList.indexOf("SD");
|
||||||
if (newIdx >= 0)
|
if (newIdx >= 0)
|
||||||
|
|
|
@ -47,7 +47,15 @@ void HardwarePanel::setupSwitchType(int index, QLabel * label, AutoLineEdit * na
|
||||||
label->setText("SJ");
|
label->setText("SJ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (IS_JUMPER_T12(board)) {
|
else if (IS_RADIOMASTER_TX12(board)) {
|
||||||
|
if (index == 6) {
|
||||||
|
label->setText("SI");
|
||||||
|
}
|
||||||
|
else if (index == 7) {
|
||||||
|
label->setText("SJ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (IS_FAMILY_T12(board)) {
|
||||||
if (index == 4) {
|
if (index == 4) {
|
||||||
label->setText("SG");
|
label->setText("SG");
|
||||||
}
|
}
|
||||||
|
@ -101,6 +109,15 @@ void HardwarePanel::setupSliderType(int index, QLabel *label, AutoLineEdit *name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool HardwarePanel::isSwitch3Pos(int idx)
|
||||||
|
{
|
||||||
|
Board::Type board = firmware->getBoard();
|
||||||
|
Board::SwitchInfo switchInfo = Boards::getSwitchInfo(board, idx);
|
||||||
|
|
||||||
|
switchInfo.config = Board::SwitchType(generalSettings.switchConfig[idx]);
|
||||||
|
return switchInfo.config == Board::SWITCH_3POS;
|
||||||
|
};
|
||||||
|
|
||||||
HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings, Firmware * firmware):
|
HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings, Firmware * firmware):
|
||||||
GeneralPanel(parent, generalSettings, firmware),
|
GeneralPanel(parent, generalSettings, firmware),
|
||||||
ui(new Ui::Hardware)
|
ui(new Ui::Hardware)
|
||||||
|
@ -147,17 +164,17 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings
|
||||||
setupSliderType(2, ui->ls2Label, ui->ls2Name, ui->ls2Type);
|
setupSliderType(2, ui->ls2Label, ui->ls2Name, ui->ls2Type);
|
||||||
setupSliderType(3, ui->rs2Label, ui->rs2Name, ui->rs2Type);
|
setupSliderType(3, ui->rs2Label, ui->rs2Name, ui->rs2Type);
|
||||||
|
|
||||||
setupSwitchType(0, ui->saLabel, ui->saName, ui->saType);
|
setupSwitchType(0, ui->saLabel, ui->saName, ui->saType, isSwitch3Pos(0));
|
||||||
setupSwitchType(1, ui->sbLabel, ui->sbName, ui->sbType);
|
setupSwitchType(1, ui->sbLabel, ui->sbName, ui->sbType, isSwitch3Pos(1));
|
||||||
setupSwitchType(2, ui->scLabel, ui->scName, ui->scType);
|
setupSwitchType(2, ui->scLabel, ui->scName, ui->scType, isSwitch3Pos(2));
|
||||||
setupSwitchType(3, ui->sdLabel, ui->sdName, ui->sdType);
|
setupSwitchType(3, ui->sdLabel, ui->sdName, ui->sdType, isSwitch3Pos(3));
|
||||||
setupSwitchType(4, ui->seLabel, ui->seName, ui->seType);
|
setupSwitchType(4, ui->seLabel, ui->seName, ui->seType, isSwitch3Pos(4));
|
||||||
setupSwitchType(5, ui->sfLabel, ui->sfName, ui->sfType, false); //switch does not support 3POS
|
setupSwitchType(5, ui->sfLabel, ui->sfName, ui->sfType, isSwitch3Pos(5));
|
||||||
setupSwitchType(6, ui->sgLabel, ui->sgName, ui->sgType);
|
setupSwitchType(6, ui->sgLabel, ui->sgName, ui->sgType, isSwitch3Pos(6));
|
||||||
setupSwitchType(7, ui->shLabel, ui->shName, ui->shType, false); //switch does not support 3POS
|
setupSwitchType(7, ui->shLabel, ui->shName, ui->shType, isSwitch3Pos(7));
|
||||||
setupSwitchType(8, ui->siLabel, ui->siName, ui->siType);
|
setupSwitchType(8, ui->siLabel, ui->siName, ui->siType, isSwitch3Pos(8));
|
||||||
setupSwitchType(9, ui->sjLabel, ui->sjName, ui->sjType);
|
setupSwitchType(9, ui->sjLabel, ui->sjName, ui->sjType, isSwitch3Pos(9));
|
||||||
setupSwitchType(10, ui->skLabel, ui->skName, ui->skType);
|
setupSwitchType(10, ui->skLabel, ui->skName, ui->skType); // Here starts X9E, only 3 switches
|
||||||
setupSwitchType(11, ui->slLabel, ui->slName, ui->slType);
|
setupSwitchType(11, ui->slLabel, ui->slName, ui->slType);
|
||||||
setupSwitchType(12, ui->smLabel, ui->smName, ui->smType);
|
setupSwitchType(12, ui->smLabel, ui->smName, ui->smType);
|
||||||
setupSwitchType(13, ui->snLabel, ui->snName, ui->snType);
|
setupSwitchType(13, ui->snLabel, ui->snName, ui->snType);
|
||||||
|
|
|
@ -63,6 +63,7 @@ class HardwarePanel : public GeneralPanel
|
||||||
Ui::Hardware *ui;
|
Ui::Hardware *ui;
|
||||||
|
|
||||||
void setValues();
|
void setValues();
|
||||||
|
bool isSwitch3Pos(int idx);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _HARDWARE_H_
|
#endif // _HARDWARE_H_
|
||||||
|
|
BIN
companion/src/images/simulator/TX12/bottom.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
companion/src/images/simulator/TX12/left-pagedn.png
Executable file
After Width: | Height: | Size: 64 KiB |
BIN
companion/src/images/simulator/TX12/left-pageup.png
Executable file
After Width: | Height: | Size: 64 KiB |
BIN
companion/src/images/simulator/TX12/left-rtn.png
Executable file
After Width: | Height: | Size: 64 KiB |
BIN
companion/src/images/simulator/TX12/left-sys.png
Executable file
After Width: | Height: | Size: 64 KiB |
BIN
companion/src/images/simulator/TX12/left-tele.png
Executable file
After Width: | Height: | Size: 66 KiB |
BIN
companion/src/images/simulator/TX12/left.png
Executable file
After Width: | Height: | Size: 49 KiB |
BIN
companion/src/images/simulator/TX12/right-ent.png
Executable file
After Width: | Height: | Size: 63 KiB |
BIN
companion/src/images/simulator/TX12/right-mdl.png
Executable file
After Width: | Height: | Size: 63 KiB |
BIN
companion/src/images/simulator/TX12/right.png
Executable file
After Width: | Height: | Size: 49 KiB |
BIN
companion/src/images/simulator/TX12/top.png
Normal file
After Width: | Height: | Size: 20 KiB |
|
@ -412,6 +412,7 @@ void Curves::onPointEdited()
|
||||||
model->curves[currentCurve].points[index].x = spnx[index]->value();
|
model->curves[currentCurve].points[index].x = spnx[index]->value();
|
||||||
model->curves[currentCurve].points[index].y = spny[index]->value();
|
model->curves[currentCurve].points[index].y = spny[index]->value();
|
||||||
updateCurve();
|
updateCurve();
|
||||||
|
updateCurvePoints();
|
||||||
emit modified();
|
emit modified();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ set(simulation_SRCS
|
||||||
simulateduiwidgetJumperT12.cpp
|
simulateduiwidgetJumperT12.cpp
|
||||||
simulateduiwidgetJumperT16.cpp
|
simulateduiwidgetJumperT16.cpp
|
||||||
simulateduiwidgetJumperT18.cpp
|
simulateduiwidgetJumperT18.cpp
|
||||||
|
simulateduiwidgetTX12.cpp
|
||||||
simulateduiwidgetTX16S.cpp
|
simulateduiwidgetTX16S.cpp
|
||||||
simulatorinterface.cpp
|
simulatorinterface.cpp
|
||||||
simulatormainwindow.cpp
|
simulatormainwindow.cpp
|
||||||
|
@ -41,6 +42,7 @@ set(simulation_UIS
|
||||||
simulateduiwidgetJumperT12.ui
|
simulateduiwidgetJumperT12.ui
|
||||||
simulateduiwidgetJumperT16.ui
|
simulateduiwidgetJumperT16.ui
|
||||||
simulateduiwidgetJumperT18.ui
|
simulateduiwidgetJumperT18.ui
|
||||||
|
simulateduiwidgetTX12.ui
|
||||||
simulateduiwidgetTX16S.ui
|
simulateduiwidgetTX16S.ui
|
||||||
simulatormainwindow.ui
|
simulatormainwindow.ui
|
||||||
simulatorstartupdialog.ui
|
simulatorstartupdialog.ui
|
||||||
|
|
|
@ -115,6 +115,7 @@ namespace Ui {
|
||||||
class SimulatedUIWidgetJumperT16;
|
class SimulatedUIWidgetJumperT16;
|
||||||
class SimulatedUIWidgetJumperT18;
|
class SimulatedUIWidgetJumperT18;
|
||||||
class SimulatedUIWidgetTX16S;
|
class SimulatedUIWidgetTX16S;
|
||||||
|
class SimulatedUIWidgetTX12;
|
||||||
}
|
}
|
||||||
|
|
||||||
class SimulatedUIWidget9X: public SimulatedUIWidget
|
class SimulatedUIWidget9X: public SimulatedUIWidget
|
||||||
|
@ -265,6 +266,19 @@ class SimulatedUIWidgetJumperT18: public SimulatedUIWidget
|
||||||
Ui::SimulatedUIWidgetJumperT18 * ui;
|
Ui::SimulatedUIWidgetJumperT18 * ui;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class SimulatedUIWidgetTX12: public SimulatedUIWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit SimulatedUIWidgetTX12(SimulatorInterface * simulator, QWidget * parent = nullptr);
|
||||||
|
virtual ~SimulatedUIWidgetTX12();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::SimulatedUIWidgetTX12 * ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class SimulatedUIWidgetTX16S: public SimulatedUIWidget
|
class SimulatedUIWidgetTX16S: public SimulatedUIWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
67
companion/src/simulation/simulateduiwidgetTX12.cpp
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
#include "simulateduiwidget.h"
|
||||||
|
#include "ui_simulateduiwidgetTX12.h"
|
||||||
|
|
||||||
|
// NOTE: RadioUiAction(NUMBER,...): NUMBER relates to enum EnumKeys in the specific board.h
|
||||||
|
|
||||||
|
SimulatedUIWidgetTX12::SimulatedUIWidgetTX12(SimulatorInterface *simulator, QWidget * parent):
|
||||||
|
SimulatedUIWidget(simulator, parent),
|
||||||
|
ui(new Ui::SimulatedUIWidgetTX12)
|
||||||
|
{
|
||||||
|
RadioUiAction * act;
|
||||||
|
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
// add actions in order of appearance on the help menu
|
||||||
|
|
||||||
|
act = new RadioUiAction(5, QList<int>() << Qt::Key_Up, SIMU_STR_HLP_KEY_UP, SIMU_STR_HLP_ACT_MDL);
|
||||||
|
addRadioWidget(ui->rightbuttons->addArea(QRect(60, 5, 90, 60), "TX12/right-mdl.png", act));
|
||||||
|
|
||||||
|
m_mouseMidClickAction = new RadioUiAction(1, QList<int>() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ROT_DN);
|
||||||
|
addRadioWidget(ui->rightbuttons->addArea(QRect(45, 100, 70, 120), "TX12/right-ent.png", m_mouseMidClickAction));
|
||||||
|
|
||||||
|
act = new RadioUiAction(4, QList<int>() << Qt::Key_Left, SIMU_STR_HLP_KEY_LFT, SIMU_STR_HLP_ACT_SYS);
|
||||||
|
addRadioWidget(ui->leftbuttons->addArea(QRect(35, 5, 80, 50), "TX12/left-sys.png", act));
|
||||||
|
|
||||||
|
act = new RadioUiAction(6, QList<int>() << Qt::Key_Right, SIMU_STR_HLP_KEY_RGT, SIMU_STR_HLP_ACT_TELE);
|
||||||
|
addRadioWidget(ui->leftbuttons->addArea(QRect(90, 210, 80, 35), "TX12/left-tele.png", act));
|
||||||
|
|
||||||
|
act = new RadioUiAction(3, QList<int>() << Qt::Key_PageDown, SIMU_STR_HLP_KEY_PGDN, SIMU_STR_HLP_ACT_PGDN);
|
||||||
|
addRadioWidget(ui->leftbuttons->addArea(QRect(75, 125, 80, 35), "TX12/left-pagedn.png", act));
|
||||||
|
|
||||||
|
act = new RadioUiAction(2, QList<int>() << Qt::Key_PageUp, SIMU_STR_HLP_KEY_PGUP, SIMU_STR_HLP_ACT_PGUP);
|
||||||
|
addRadioWidget(ui->leftbuttons->addArea(QRect(80, 170, 80, 35), "TX12/left-pageup.png", act));
|
||||||
|
|
||||||
|
act = new RadioUiAction(0, QList<int>() << Qt::Key_Down << Qt::Key_Delete << Qt::Key_Escape << Qt::Key_Backspace, SIMU_STR_HLP_KEYS_EXIT, SIMU_STR_HLP_ACT_EXIT);
|
||||||
|
addRadioWidget(ui->leftbuttons->addArea(QRect(70, 85, 80, 35), "TX12/left-rtn.png", act));
|
||||||
|
|
||||||
|
m_scrollUpAction = new RadioUiAction(-1, QList<int>() << Qt::Key_Minus << Qt::Key_Equal << Qt::Key_Left, SIMU_STR_HLP_KEYS_GO_LFT, SIMU_STR_HLP_ACT_ROT_LFT);
|
||||||
|
m_scrollDnAction = new RadioUiAction(-1, QList<int>() << Qt::Key_Plus << Qt::Key_Right, SIMU_STR_HLP_KEYS_GO_RGT, SIMU_STR_HLP_ACT_ROT_RGT);
|
||||||
|
connectScrollActions();
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
SimulatedUIWidgetTX12::~SimulatedUIWidgetTX12()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
258
companion/src/simulation/simulateduiwidgetTX12.ui
Normal file
|
@ -0,0 +1,258 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>SimulatedUIWidgetTX12</class>
|
||||||
|
<widget class="QWidget" name="SimulatedUIWidgetTX12">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>641</width>
|
||||||
|
<height>272</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>641</width>
|
||||||
|
<height>272</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>641</width>
|
||||||
|
<height>272</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string notr="true">Taranis TX12 Simulator</string>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 255, 255, 255), stop:0.757062 rgba(241, 238, 238, 255), stop:1 rgba(247, 245, 245, 255));</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="1" column="0" rowspan="3">
|
||||||
|
<widget class="ButtonsWidget" name="leftbuttons" native="true">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>196</width>
|
||||||
|
<height>253</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>196</width>
|
||||||
|
<height>253</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background:url(:/images/simulator/TX12/left.png);</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="LcdWidget" name="lcd" native="true">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>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>
|
||||||
|
<item row="1" column="2" rowspan="3">
|
||||||
|
<widget class="ButtonsWidget" name="rightbuttons" native="true">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>189</width>
|
||||||
|
<height>253</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>189</width>
|
||||||
|
<height>253</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background:url(:/images/simulator/TX12/right.png)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QWidget" name="top" native="true">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>261</width>
|
||||||
|
<height>101</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>261</width>
|
||||||
|
<height>101</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background:url(:/images/simulator/TX12/top.png)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QWidget" name="bottom" native="true">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>261</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>261</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background:url(:/images/simulator/TX12/bottom.png)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" colspan="3">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>10</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>12</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="baseSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>12</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: rgb(255, 255, 255);</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0" colspan="3">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>10</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>10</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: rgb(247, 245, 245);</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>LcdWidget</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>lcdwidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>ButtonsWidget</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>buttonswidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -97,6 +97,9 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato
|
||||||
case Board::BOARD_JUMPER_T18:
|
case Board::BOARD_JUMPER_T18:
|
||||||
radioUiWidget = new SimulatedUIWidgetJumperT18(simulator, this);
|
radioUiWidget = new SimulatedUIWidgetJumperT18(simulator, this);
|
||||||
break;
|
break;
|
||||||
|
case Board::BOARD_RADIOMASTER_TX12:
|
||||||
|
radioUiWidget = new SimulatedUIWidgetTX12(simulator, this);
|
||||||
|
break;
|
||||||
case Board::BOARD_RADIOMASTER_TX16S:
|
case Board::BOARD_RADIOMASTER_TX16S:
|
||||||
radioUiWidget = new SimulatedUIWidgetTX16S(simulator, this);
|
radioUiWidget = new SimulatedUIWidgetTX16S(simulator, this);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -48,6 +48,7 @@ QStringList const Translations::getAvailableTranslations()
|
||||||
<< "ru_RU"
|
<< "ru_RU"
|
||||||
<< "sv_SE"
|
<< "sv_SE"
|
||||||
<< "zh_CN"
|
<< "zh_CN"
|
||||||
|
<< "zh_TW"
|
||||||
<< "ja_JP" ;
|
<< "ja_JP" ;
|
||||||
}
|
}
|
||||||
return locales;
|
return locales;
|
||||||
|
|
21736
companion/src/translations/companion_zh_TW.ts
Normal file
|
@ -518,8 +518,6 @@ AudioQueue::AudioQueue()
|
||||||
#if !defined(SIMU)
|
#if !defined(SIMU)
|
||||||
void audioTask(void * pdata)
|
void audioTask(void * pdata)
|
||||||
{
|
{
|
||||||
audioWaitReady();
|
|
||||||
|
|
||||||
while (!audioQueue.started()) {
|
while (!audioQueue.started()) {
|
||||||
RTOS_WAIT_TICKS(1);
|
RTOS_WAIT_TICKS(1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,7 +214,13 @@ enum ModuleIndex {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(RADIO_FAMILY_T16) || (defined(RADIO_T12) && defined(INTERNAL_MODULE_MULTI)) || defined(ALLOW_TRAINER_MULTI)
|
#if defined(RADIO_T16) && !defined(INTERNAL_MODULE_MULTI)
|
||||||
|
#if defined(BLUETOOTH)
|
||||||
|
#define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE_BLUETOOTH
|
||||||
|
#else
|
||||||
|
#define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE
|
||||||
|
#endif
|
||||||
|
#elif defined(INTERNAL_MODULE_MULTI) || defined(ALLOW_TRAINER_MULTI)
|
||||||
#define TRAINER_MODE_MAX() TRAINER_MODE_MULTI
|
#define TRAINER_MODE_MAX() TRAINER_MODE_MULTI
|
||||||
#elif defined(BLUETOOTH)
|
#elif defined(BLUETOOTH)
|
||||||
#define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE_BLUETOOTH
|
#define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE_BLUETOOTH
|
||||||
|
|
|
@ -165,8 +165,13 @@ void menuModelCurveOne(event_t event)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
case EVT_KEY_LONG(KEY_MENU):
|
case EVT_KEY_FIRST(KEY_MODEL):
|
||||||
|
pushMenu(menuChannelsView);
|
||||||
|
killEvents(event);
|
||||||
|
break;
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
|
case EVT_KEY_FIRST(KEY_MENU):
|
||||||
pushMenu(menuChannelsView);
|
pushMenu(menuChannelsView);
|
||||||
killEvents(event);
|
killEvents(event);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -49,8 +49,13 @@ enum ExposFields {
|
||||||
|
|
||||||
void menuModelExpoOne(event_t event)
|
void menuModelExpoOne(event_t event)
|
||||||
{
|
{
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
if (event == EVT_KEY_LONG(KEY_MENU)) {
|
if (event == EVT_KEY_FIRST(KEY_MODEL)) {
|
||||||
|
pushMenu(menuChannelsView);
|
||||||
|
killEvents(event);
|
||||||
|
}
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
|
if (event == EVT_KEY_FIRST(KEY_MENU)) {
|
||||||
pushMenu(menuChannelsView);
|
pushMenu(menuChannelsView);
|
||||||
killEvents(event);
|
killEvents(event);
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,8 +85,13 @@ void drawOffsetBar(uint8_t x, uint8_t y, MixData * md)
|
||||||
|
|
||||||
void menuModelMixOne(event_t event)
|
void menuModelMixOne(event_t event)
|
||||||
{
|
{
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
if (event == EVT_KEY_LONG(KEY_MENU)) {
|
if (event == EVT_KEY_FIRST(KEY_MODEL)) {
|
||||||
|
pushMenu(menuChannelsView);
|
||||||
|
killEvents(event);
|
||||||
|
}
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
|
if (event == EVT_KEY_FIRST(KEY_MENU)) {
|
||||||
pushMenu(menuChannelsView);
|
pushMenu(menuChannelsView);
|
||||||
killEvents(event);
|
killEvents(event);
|
||||||
}
|
}
|
||||||
|
|
|
@ -203,7 +203,16 @@ void menuModelSelect(event_t event)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
case EVT_KEY_FIRST(KEY_PAGEUP):
|
||||||
|
chainMenu(menuTabModel[DIM(menuTabModel)-1]);
|
||||||
|
killEvents(event);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EVT_KEY_FIRST(KEY_PAGEDN):
|
||||||
|
chainMenu(menuModelSetup);
|
||||||
|
break;
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
case EVT_KEY_LONG(KEY_PAGE):
|
case EVT_KEY_LONG(KEY_PAGE):
|
||||||
chainMenu(menuTabModel[DIM(menuTabModel)-1]);
|
chainMenu(menuTabModel[DIM(menuTabModel)-1]);
|
||||||
killEvents(event);
|
killEvents(event);
|
||||||
|
|
|
@ -236,14 +236,7 @@ void menuModelTelemetry(event_t event)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ITEM_TELEMETRY_RSSI_LABEL:
|
case ITEM_TELEMETRY_RSSI_LABEL:
|
||||||
#if defined(MULTIMODULE)
|
lcdDrawTextAlignedLeft(y, getRssiLabel());
|
||||||
if (telemetryProtocol == PROTOCOL_TELEMETRY_MULTIMODULE && (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FS_AFHDS2A || g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol() == MODULE_SUBTYPE_MULTI_HOTT))
|
|
||||||
lcdDrawTextAlignedLeft(y, "RQly");
|
|
||||||
else
|
|
||||||
lcdDrawTextAlignedLeft(y, "RSSI");
|
|
||||||
#else
|
|
||||||
lcdDrawTextAlignedLeft(y, "RSSI");
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ITEM_TELEMETRY_RSSI_SOURCE: {
|
case ITEM_TELEMETRY_RSSI_SOURCE: {
|
||||||
|
|
|
@ -42,7 +42,10 @@ enum AboutScreens {
|
||||||
#define ABOUT_X 2
|
#define ABOUT_X 2
|
||||||
#define ABOUT_INDENT 4
|
#define ABOUT_INDENT 4
|
||||||
|
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
|
||||||
|
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_LONG(KEY_PAGE)
|
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_LONG(KEY_PAGE)
|
||||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGE)
|
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGE)
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -26,7 +26,12 @@ constexpr coord_t CHANNEL_GAUGE_OFFSET = CHANNEL_VALUE_OFFSET;
|
||||||
constexpr coord_t CHANNEL_BAR_WIDTH = 70;
|
constexpr coord_t CHANNEL_BAR_WIDTH = 70;
|
||||||
constexpr coord_t CHANNEL_PROPERTIES_OFFSET = CHANNEL_GAUGE_OFFSET + CHANNEL_BAR_WIDTH + 2;
|
constexpr coord_t CHANNEL_PROPERTIES_OFFSET = CHANNEL_GAUGE_OFFSET + CHANNEL_BAR_WIDTH + 2;
|
||||||
|
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
|
||||||
|
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
|
||||||
|
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
|
||||||
|
#define EVT_KEY_PREVIOUS_PAGE EVT_ROTARY_LEFT
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_LONG(KEY_PAGE)
|
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_LONG(KEY_PAGE)
|
||||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGE)
|
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGE)
|
||||||
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
|
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
|
||||||
|
@ -54,7 +59,7 @@ void menuChannelsViewCommon(event_t event)
|
||||||
memclear(&reusableBuffer.viewChannels, sizeof(reusableBuffer.viewChannels));
|
memclear(&reusableBuffer.viewChannels, sizeof(reusableBuffer.viewChannels));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVT_KEY_FIRST(KEY_ENTER):
|
case EVT_KEY_BREAK(KEY_ENTER):
|
||||||
reusableBuffer.viewChannels.mixersView = !reusableBuffer.viewChannels.mixersView;
|
reusableBuffer.viewChannels.mixersView = !reusableBuffer.viewChannels.mixersView;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -286,7 +286,16 @@ void displayVoltageOrAlarm()
|
||||||
#define displayVoltageOrAlarm() displayBattVoltage()
|
#define displayVoltageOrAlarm() displayBattVoltage()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(NAVIGATION_X7) || defined(NAVIGATION_TBS)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
#define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER)
|
||||||
|
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_FIRST(KEY_PAGEUP)
|
||||||
|
#define EVT_KEY_NEXT_VIEW EVT_KEY_FIRST(KEY_PAGEDN)
|
||||||
|
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
|
||||||
|
#define EVT_KEY_PREVIOUS_PAGE EVT_ROTARY_LEFT
|
||||||
|
#define EVT_KEY_MODEL_MENU EVT_KEY_LONG(KEY_MODEL)
|
||||||
|
#define EVT_KEY_GENERAL_MENU EVT_KEY_LONG(KEY_SYS)
|
||||||
|
#define EVT_KEY_TELEMETRY EVT_KEY_FIRST(KEY_TELE)
|
||||||
|
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_TBS)
|
||||||
#define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER)
|
#define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER)
|
||||||
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGE)
|
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGE)
|
||||||
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
|
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
|
||||||
|
|
|
@ -31,14 +31,21 @@ void menuStatisticsView(event_t event)
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case EVT_KEY_FIRST(KEY_UP):
|
case EVT_KEY_FIRST(KEY_UP):
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
case EVT_KEY_BREAK(KEY_PAGEDN):
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
case EVT_KEY_BREAK(KEY_PAGE):
|
case EVT_KEY_BREAK(KEY_PAGE):
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
chainMenu(menuStatisticsDebug);
|
chainMenu(menuStatisticsDebug);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVT_KEY_FIRST(KEY_DOWN):
|
case EVT_KEY_FIRST(KEY_DOWN):
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
case EVT_KEY_BREAK(KEY_PAGEUP):
|
||||||
|
killEvents(event);
|
||||||
|
chainMenu(menuStatisticsDebug2);
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
case EVT_KEY_LONG(KEY_PAGE):
|
case EVT_KEY_LONG(KEY_PAGE):
|
||||||
killEvents(event);
|
killEvents(event);
|
||||||
chainMenu(menuStatisticsDebug2);
|
chainMenu(menuStatisticsDebug2);
|
||||||
|
@ -133,7 +140,12 @@ void menuStatisticsDebug(event_t event)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVT_KEY_FIRST(KEY_UP):
|
case EVT_KEY_FIRST(KEY_UP):
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
case EVT_KEY_BREAK(KEY_PAGEDN):
|
||||||
|
disableVBatBridge();
|
||||||
|
chainMenu(menuStatisticsDebug2);
|
||||||
|
break;
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
case EVT_KEY_BREAK(KEY_PAGE):
|
case EVT_KEY_BREAK(KEY_PAGE):
|
||||||
disableVBatBridge();
|
disableVBatBridge();
|
||||||
chainMenu(menuStatisticsDebug2);
|
chainMenu(menuStatisticsDebug2);
|
||||||
|
@ -141,7 +153,9 @@ void menuStatisticsDebug(event_t event)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case EVT_KEY_FIRST(KEY_DOWN):
|
case EVT_KEY_FIRST(KEY_DOWN):
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
case EVT_KEY_BREAK(KEY_PAGEUP):
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
case EVT_KEY_LONG(KEY_PAGE):
|
case EVT_KEY_LONG(KEY_PAGE):
|
||||||
#endif
|
#endif
|
||||||
killEvents(event);
|
killEvents(event);
|
||||||
|
@ -264,14 +278,18 @@ void menuStatisticsDebug2(event_t event)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVT_KEY_FIRST(KEY_UP):
|
case EVT_KEY_FIRST(KEY_UP):
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
case EVT_KEY_BREAK(KEY_PAGEDN):
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
case EVT_KEY_BREAK(KEY_PAGE):
|
case EVT_KEY_BREAK(KEY_PAGE):
|
||||||
#endif
|
#endif
|
||||||
chainMenu(menuStatisticsView);
|
chainMenu(menuStatisticsView);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case EVT_KEY_FIRST(KEY_DOWN):
|
case EVT_KEY_FIRST(KEY_DOWN):
|
||||||
#if defined(NAVIGATION_X7)
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
case EVT_KEY_BREAK(KEY_PAGEUP):
|
||||||
|
#elif defined(NAVIGATION_X7)
|
||||||
case EVT_KEY_LONG(KEY_PAGE):
|
case EVT_KEY_LONG(KEY_PAGE):
|
||||||
#endif
|
#endif
|
||||||
killEvents(event);
|
killEvents(event);
|
||||||
|
|
|
@ -227,14 +227,7 @@ void menuModelTelemetry(event_t event)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ITEM_TELEMETRY_RSSI_LABEL:
|
case ITEM_TELEMETRY_RSSI_LABEL:
|
||||||
#if defined(MULTIMODULE)
|
lcdDrawTextAlignedLeft(y, getRssiLabel());
|
||||||
if (telemetryProtocol == PROTOCOL_TELEMETRY_MULTIMODULE && (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FS_AFHDS2A || g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol() == MODULE_SUBTYPE_MULTI_HOTT))
|
|
||||||
lcdDrawTextAlignedLeft(y, "RQly");
|
|
||||||
else
|
|
||||||
lcdDrawTextAlignedLeft(y, "RSSI");
|
|
||||||
#else
|
|
||||||
lcdDrawTextAlignedLeft(y, "RSSI");
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ITEM_TELEMETRY_RSSI_SOURCE: {
|
case ITEM_TELEMETRY_RSSI_SOURCE: {
|
||||||
|
|
|
@ -393,11 +393,7 @@ void ModelTelemetryPage::build(FormWindow * window, int8_t focusSensorIndex)
|
||||||
this->window = window;
|
this->window = window;
|
||||||
|
|
||||||
// RSSI
|
// RSSI
|
||||||
if (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE &&
|
new Subtitle(window, grid.getLineSlot(), getRssiLabel());
|
||||||
g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FS_AFHDS2A)
|
|
||||||
new Subtitle(window, grid.getLineSlot(), "RSNR");
|
|
||||||
else
|
|
||||||
new Subtitle(window, grid.getLineSlot(), "RSSI");
|
|
||||||
grid.nextLine();
|
grid.nextLine();
|
||||||
|
|
||||||
new StaticText(window, grid.getLabelSlot(true), STR_LOWALARM);
|
new StaticText(window, grid.getLabelSlot(true), STR_LOWALARM);
|
||||||
|
|
|
@ -479,6 +479,13 @@ void menuModelMixAll(event_t event)
|
||||||
s_currCh = ch;
|
s_currCh = ch;
|
||||||
if (!s_copyMode) {
|
if (!s_copyMode) {
|
||||||
attr = INVERS;
|
attr = INVERS;
|
||||||
|
displayHeaderChannelName(ch - 1);
|
||||||
|
#if LCD_W >= 212
|
||||||
|
if (g_model.limitData[ch - 1].name[0] != '\0') {
|
||||||
|
coord_t xPos = MIX_HDR_GAUGE_POS_X - FWNUM * 5 - 50;
|
||||||
|
lcdDrawFilledRect(lcdNextPos, 0, lcdNextPos - xPos, MENU_HEADER_HEIGHT, SOLID, FILL_WHITE | GREY_DEFAULT);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (cur-menuVerticalOffset >= 0 && cur-menuVerticalOffset < NUM_BODY_LINES) {
|
if (cur-menuVerticalOffset >= 0 && cur-menuVerticalOffset < NUM_BODY_LINES) {
|
||||||
|
|
|
@ -262,6 +262,8 @@ void onHardwareAntennaSwitchConfirm(const char * result)
|
||||||
#define SWITCH_TYPE_MAX(sw) (SWITCH_3POS)
|
#define SWITCH_TYPE_MAX(sw) (SWITCH_3POS)
|
||||||
#elif defined(PCBX9E)
|
#elif defined(PCBX9E)
|
||||||
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS)
|
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS)
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SA - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SD - MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS)
|
||||||
#else
|
#else
|
||||||
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH - MIXSRC_FIRST_SWITCH <= sw) ? SWITCH_2POS : SWITCH_3POS)
|
#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF - MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH - MIXSRC_FIRST_SWITCH <= sw) ? SWITCH_2POS : SWITCH_3POS)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -34,6 +34,9 @@ enum NavigationDirection {
|
||||||
#if defined(NAVIGATION_XLITE)
|
#if defined(NAVIGATION_XLITE)
|
||||||
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_LEFT) && IS_SHIFT_PRESSED())
|
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_LEFT) && IS_SHIFT_PRESSED())
|
||||||
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_LONG(KEY_RIGHT) && IS_SHIFT_PRESSED())
|
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_LONG(KEY_RIGHT) && IS_SHIFT_PRESSED())
|
||||||
|
#elif defined(NAVIGATION_X7_TX12)
|
||||||
|
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_UP))
|
||||||
|
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_DOWN))
|
||||||
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
|
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
|
||||||
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_PAGE))
|
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_PAGE))
|
||||||
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_BREAK(KEY_PAGE))
|
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_BREAK(KEY_PAGE))
|
||||||
|
|
|
@ -217,7 +217,11 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t
|
||||||
if (menuTab) {
|
if (menuTab) {
|
||||||
int cc = curr;
|
int cc = curr;
|
||||||
switch (event) {
|
switch (event) {
|
||||||
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
case EVT_KEY_FIRST(KEY_PAGEUP):
|
||||||
|
#else
|
||||||
case EVT_KEY_LONG(KEY_PAGE):
|
case EVT_KEY_LONG(KEY_PAGE):
|
||||||
|
#endif
|
||||||
if (s_editMode>0)
|
if (s_editMode>0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -228,7 +232,11 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t
|
||||||
killEvents(event);
|
killEvents(event);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#if defined(NAVIGATION_X7_TX12)
|
||||||
|
case EVT_KEY_FIRST(KEY_PAGEDN):
|
||||||
|
#else
|
||||||
case EVT_KEY_BREAK(KEY_PAGE):
|
case EVT_KEY_BREAK(KEY_PAGE):
|
||||||
|
#endif
|
||||||
if (s_editMode>0)
|
if (s_editMode>0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -28,5 +28,6 @@ if(PYTHONINTERP_FOUND)
|
||||||
add_lua_export_target(x10 ${LUA_INCLUDES} -DPCBHORUS -DPCBX10)
|
add_lua_export_target(x10 ${LUA_INCLUDES} -DPCBHORUS -DPCBX10)
|
||||||
add_lua_export_target(x12s ${LUA_INCLUDES} -DPCBHORUS -DPCBX12S)
|
add_lua_export_target(x12s ${LUA_INCLUDES} -DPCBHORUS -DPCBX12S)
|
||||||
add_lua_export_target(t12 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_T12)
|
add_lua_export_target(t12 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_T12)
|
||||||
|
add_lua_export_target(tx12 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_TX12)
|
||||||
add_lua_export_target(t16 ${LUA_INCLUDES} -DPCBHORUS -DPCBX10 -DRADIO_T16)
|
add_lua_export_target(t16 ${LUA_INCLUDES} -DPCBHORUS -DPCBX10 -DRADIO_T16)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -40,6 +40,8 @@
|
||||||
#include "lua/lua_exports_x7.inc"
|
#include "lua/lua_exports_x7.inc"
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#include "lua/lua_exports_t12.inc"
|
#include "lua/lua_exports_t12.inc"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#include "lua/lua_exports_tx12.inc"
|
||||||
#elif defined(PCBX9LITES)
|
#elif defined(PCBX9LITES)
|
||||||
#include "lua/lua_exports_x9lites.inc"
|
#include "lua/lua_exports_x9lites.inc"
|
||||||
#elif defined(PCBX9LITE)
|
#elif defined(PCBX9LITE)
|
||||||
|
@ -1788,7 +1790,9 @@ const luaR_value_entry opentxConstants[] = {
|
||||||
#endif
|
#endif
|
||||||
#if !defined(PCBXLITE) && !defined(PCBX9LITE)
|
#if !defined(PCBXLITE) && !defined(PCBX9LITE)
|
||||||
{ "MIXSRC_SF", MIXSRC_SF },
|
{ "MIXSRC_SF", MIXSRC_SF },
|
||||||
|
#if !defined(RADIO_TX12)
|
||||||
{ "MIXSRC_SH", MIXSRC_SH },
|
{ "MIXSRC_SH", MIXSRC_SH },
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
{ "MIXSRC_CH1", MIXSRC_CH1 },
|
{ "MIXSRC_CH1", MIXSRC_CH1 },
|
||||||
{ "SWSRC_LAST", SWSRC_LAST_LOGICAL_SWITCH },
|
{ "SWSRC_LAST", SWSRC_LAST_LOGICAL_SWITCH },
|
||||||
|
@ -1876,10 +1880,17 @@ const luaR_value_entry opentxConstants[] = {
|
||||||
{ "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
|
{ "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
|
||||||
{ "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
|
{ "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
|
||||||
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
|
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
|
||||||
|
#if defined(RADIO_TX12)
|
||||||
|
{ "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_BREAK(KEY_PAGEUP) },
|
||||||
|
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGEDN) },
|
||||||
|
{ "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MODEL) },
|
||||||
|
{ "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_MODEL) },
|
||||||
|
#else
|
||||||
{ "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_LONG(KEY_PAGE) },
|
{ "EVT_VIRTUAL_PREV_PAGE", EVT_KEY_LONG(KEY_PAGE) },
|
||||||
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGE) },
|
{ "EVT_VIRTUAL_NEXT_PAGE", EVT_KEY_BREAK(KEY_PAGE) },
|
||||||
{ "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MENU) },
|
{ "EVT_VIRTUAL_MENU", EVT_KEY_BREAK(KEY_MENU) },
|
||||||
{ "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_MENU) },
|
{ "EVT_VIRTUAL_MENU_LONG", EVT_KEY_LONG(KEY_MENU) },
|
||||||
|
#endif
|
||||||
{ "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) },
|
{ "EVT_VIRTUAL_ENTER", EVT_KEY_BREAK(KEY_ENTER) },
|
||||||
{ "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
|
{ "EVT_VIRTUAL_ENTER_LONG", EVT_KEY_LONG(KEY_ENTER) },
|
||||||
{ "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
|
{ "EVT_VIRTUAL_EXIT", EVT_KEY_BREAK(KEY_EXIT) },
|
||||||
|
|
|
@ -553,6 +553,8 @@ bool setTrimValue(uint8_t phase, uint8_t idx, int trim);
|
||||||
#define ROTARY_ENCODER_GRANULARITY (2 << g_eeGeneral.rotarySteps)
|
#define ROTARY_ENCODER_GRANULARITY (2 << g_eeGeneral.rotarySteps)
|
||||||
#elif defined(RADIO_FAMILY_T16) && !defined(RADIO_T18)
|
#elif defined(RADIO_FAMILY_T16) && !defined(RADIO_T18)
|
||||||
#define ROTARY_ENCODER_GRANULARITY (1)
|
#define ROTARY_ENCODER_GRANULARITY (1)
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define ROTARY_ENCODER_GRANULARITY (1)
|
||||||
#else
|
#else
|
||||||
#define ROTARY_ENCODER_GRANULARITY (2)
|
#define ROTARY_ENCODER_GRANULARITY (2)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -52,7 +52,7 @@ uint8_t createGhostChannelsFrame(uint8_t * frame, int16_t * pulses)
|
||||||
uint32_t bits = 0;
|
uint32_t bits = 0;
|
||||||
uint8_t bitsavailable = 0;
|
uint8_t bitsavailable = 0;
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
uint32_t value = limit(0, GHST_RC_CTR_VAL_12BIT + (((pulses[i]) << 3) / 5), 2 * GHST_RC_CTR_VAL_12BIT);
|
uint32_t value = limit(0, GHST_RC_CTR_VAL_12BIT + (((pulses[i] + 2 * PPM_CH_CENTER(i) - 2 * PPM_CENTER) << 3) / 5), 2 * GHST_RC_CTR_VAL_12BIT);
|
||||||
bits |= value << bitsavailable;
|
bits |= value << bitsavailable;
|
||||||
bitsavailable += GHST_CH_BITS_12;
|
bitsavailable += GHST_CH_BITS_12;
|
||||||
while (bitsavailable >= 8) {
|
while (bitsavailable >= 8) {
|
||||||
|
@ -64,7 +64,8 @@ uint8_t createGhostChannelsFrame(uint8_t * frame, int16_t * pulses)
|
||||||
|
|
||||||
// second 4 lower speed, 8 bit channels
|
// second 4 lower speed, 8 bit channels
|
||||||
for (int i = 4; i < 8; ++i) {
|
for (int i = 4; i < 8; ++i) {
|
||||||
*buf++ = limit(0, GHST_RC_CTR_VAL_8BIT + (((pulses[i + ghostUpper4Offset]) >> 1) / 5), 2 * GHST_RC_CTR_VAL_8BIT);
|
uint8_t channelIndex = i + ghostUpper4Offset;
|
||||||
|
*buf++ = limit(0, GHST_RC_CTR_VAL_8BIT + (((pulses[channelIndex] + 2 * PPM_CH_CENTER(channelIndex) - 2 * PPM_CENTER) >> 1) / 5), 2 * GHST_RC_CTR_VAL_8BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
*buf++ = crc8(crc_start, GHST_UL_RC_CHANS_SIZE - 1);
|
*buf++ = crc8(crc_start, GHST_UL_RC_CHANS_SIZE - 1);
|
||||||
|
|
|
@ -715,4 +715,20 @@ inline void getMultiOptionValues(int8_t multi_proto, int8_t & min, int8_t & max)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
inline const char * getRssiLabel()
|
||||||
|
{
|
||||||
|
#if defined(MULTIMODULE)
|
||||||
|
if (telemetryProtocol == PROTOCOL_TELEMETRY_MULTIMODULE && (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol() == MODULE_SUBTYPE_MULTI_FS_AFHDS2A
|
||||||
|
|| g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol() == MODULE_SUBTYPE_MULTI_HOTT)) {
|
||||||
|
return "RQly";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if defined(GHOST)
|
||||||
|
if (telemetryProtocol == PROTOCOL_TELEMETRY_GHOST) {
|
||||||
|
return "RQly";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return "RSSI";
|
||||||
|
}
|
||||||
|
|
||||||
#endif // _MODULES_HELPERS_H_
|
#endif // _MODULES_HELPERS_H_
|
||||||
|
|
|
@ -144,6 +144,8 @@ const char * getBasename(const char * path);
|
||||||
#define OTX_FOURCC 0x3978746F // otx for Taranis X-Lite
|
#define OTX_FOURCC 0x3978746F // otx for Taranis X-Lite
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define OTX_FOURCC 0x3D78746F // otx for Jumper T12
|
#define OTX_FOURCC 0x3D78746F // otx for Jumper T12
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define OTX_FOURCC 0x4178746F // otx for Radiomaster TX12
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
#define OTX_FOURCC 0x3678746F // otx for Taranis X7 / X7S / X7 Express / X7S Express
|
#define OTX_FOURCC 0x3678746F // otx for Taranis X7 / X7S / X7 Express / X7S Express
|
||||||
#elif defined(PCBX9LITES)
|
#elif defined(PCBX9LITES)
|
||||||
|
|
|
@ -334,6 +334,14 @@ void OpenTxSim::updateKeysAndSwitches(bool start)
|
||||||
KEY_Left, KEY_LEFT,
|
KEY_Left, KEY_LEFT,
|
||||||
KEY_Up, KEY_UP,
|
KEY_Up, KEY_UP,
|
||||||
KEY_Down, KEY_DOWN,
|
KEY_Down, KEY_DOWN,
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
KEY_Page_Up, KEY_PAGEUP,
|
||||||
|
KEY_Page_Down, KEY_PAGEDN,
|
||||||
|
KEY_Return, KEY_ENTER,
|
||||||
|
KEY_Up, KEY_MODEL,
|
||||||
|
KEY_Down, KEY_EXIT,
|
||||||
|
KEY_Right, KEY_TELE,
|
||||||
|
KEY_Left, KEY_SYS,
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
KEY_Page_Up, KEY_MENU,
|
KEY_Page_Up, KEY_MENU,
|
||||||
#if defined(KEYS_GPIO_REG_PAGE)
|
#if defined(KEYS_GPIO_REG_PAGE)
|
||||||
|
|
|
@ -51,8 +51,9 @@ void preModelLoad()
|
||||||
if (pulsesStarted()) {
|
if (pulsesStarted()) {
|
||||||
pausePulses();
|
pausePulses();
|
||||||
}
|
}
|
||||||
|
|
||||||
pauseMixerCalculations();
|
pauseMixerCalculations();
|
||||||
|
|
||||||
|
stopTrainer();
|
||||||
}
|
}
|
||||||
|
|
||||||
void postRadioSettingsLoad()
|
void postRadioSettingsLoad()
|
||||||
|
|
|
@ -313,7 +313,7 @@ char * getSwitchName(char * dest, swsrc_t idx)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*dest++ = 'S';
|
*dest++ = 'S';
|
||||||
#if defined(PCBX7)
|
#if defined(PCBX7) && !defined(RADIO_TX12)
|
||||||
if (swinfo.quot >= 5)
|
if (swinfo.quot >= 5)
|
||||||
*dest++ = 'H' + swinfo.quot - 5;
|
*dest++ = 'H' + swinfo.quot - 5;
|
||||||
else if (swinfo.quot == 4)
|
else if (swinfo.quot == 4)
|
||||||
|
|
|
@ -126,9 +126,15 @@ uint64_t check3PosSwitchPosition(uint8_t idx, uint8_t sw, bool startup)
|
||||||
void getSwitchesPosition(bool startup)
|
void getSwitchesPosition(bool startup)
|
||||||
{
|
{
|
||||||
uint64_t newPos = 0;
|
uint64_t newPos = 0;
|
||||||
|
#if defined(RADIO_TX12)
|
||||||
|
CHECK_2POS(SW_SA);
|
||||||
|
CHECK_3POS(0, SW_SB);
|
||||||
|
CHECK_3POS(1, SW_SC);
|
||||||
|
#else
|
||||||
CHECK_3POS(0, SW_SA);
|
CHECK_3POS(0, SW_SA);
|
||||||
CHECK_3POS(1, SW_SB);
|
CHECK_3POS(1, SW_SB);
|
||||||
CHECK_3POS(2, SW_SC);
|
CHECK_3POS(2, SW_SC);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(PCBX9LITES)
|
#if defined(PCBX9LITES)
|
||||||
CHECK_2POS(SW_SD);
|
CHECK_2POS(SW_SD);
|
||||||
|
@ -146,6 +152,10 @@ void getSwitchesPosition(bool startup)
|
||||||
#elif defined(PCBXLITE)
|
#elif defined(PCBXLITE)
|
||||||
CHECK_3POS(3, SW_SD);
|
CHECK_3POS(3, SW_SD);
|
||||||
// no SWE, SWF, SWG and SWH on XLITE
|
// no SWE, SWF, SWG and SWH on XLITE
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
CHECK_2POS(SW_SD);
|
||||||
|
CHECK_3POS(2, SW_SE);
|
||||||
|
CHECK_3POS(3, SW_SF);
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
CHECK_3POS(3, SW_SD);
|
CHECK_3POS(3, SW_SD);
|
||||||
CHECK_2POS(SW_SF);
|
CHECK_2POS(SW_SF);
|
||||||
|
|
|
@ -44,6 +44,8 @@
|
||||||
const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, 1,1,-1, 1,1, 1, 1};
|
const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, 1,1,-1, 1,1, 1, 1};
|
||||||
#elif defined(PCBX9D)
|
#elif defined(PCBX9D)
|
||||||
const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, 1,1,0, 1,1, 1, 1};
|
const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, 1,1,0, 1,1, 1, 1};
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
const int8_t adcDirection[NUM_ANALOGS] = {-1,1,-1,1, -1,-1, 1, 1};
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
const int8_t adcDirection[NUM_ANALOGS] = {-1,1,-1,1, 1,1, 1, 1};
|
const int8_t adcDirection[NUM_ANALOGS] = {-1,1,-1,1, 1,1, 1, 1};
|
||||||
#elif defined(PCBX9LITE)
|
#elif defined(PCBX9LITE)
|
||||||
|
|
|
@ -95,7 +95,7 @@ if(PCB STREQUAL X12S OR PCB STREQUAL X10 OR PCB STREQUAL X9E OR (PCB STREQUAL X9
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PCB STREQUAL X7 OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES)
|
if(BLUETOOTH)
|
||||||
set(BOOTLOADER_SRC
|
set(BOOTLOADER_SRC
|
||||||
${BOOTLOADER_SRC}
|
${BOOTLOADER_SRC}
|
||||||
../../../../../targets/common/arm/stm32/bluetooth_driver.cpp
|
../../../../../targets/common/arm/stm32/bluetooth_driver.cpp
|
||||||
|
|
|
@ -247,7 +247,7 @@ int main()
|
||||||
backlightInit();
|
backlightInit();
|
||||||
backlightEnable();
|
backlightEnable();
|
||||||
|
|
||||||
#if defined(PCBX7) || defined(PCBXLITE)
|
#if defined(BLUETOOTH)
|
||||||
// we shutdown the bluetooth module now to be sure it will be detected on firmware start
|
// we shutdown the bluetooth module now to be sure it will be detected on firmware start
|
||||||
bluetoothInit(BLUETOOTH_DEFAULT_BAUDRATE, false);
|
bluetoothInit(BLUETOOTH_DEFAULT_BAUDRATE, false);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -71,7 +71,7 @@ void rotaryEncoderInit()
|
||||||
|
|
||||||
void rotaryEncoderCheck()
|
void rotaryEncoderCheck()
|
||||||
{
|
{
|
||||||
#if defined(RADIO_FAMILY_T16) && !defined(RADIO_T18)
|
#if (defined(RADIO_FAMILY_T16) && !defined(RADIO_T18)) || defined(RADIO_TX12)
|
||||||
static uint8_t state = 0;
|
static uint8_t state = 0;
|
||||||
uint8_t pins = ROTARY_ENCODER_POSITION();
|
uint8_t pins = ROTARY_ENCODER_POSITION();
|
||||||
|
|
||||||
|
|
|
@ -576,9 +576,9 @@ void usbJoystickUpdate();
|
||||||
#define USB_MANUFACTURER 'J', 'u', 'm', 'p', 'e', 'r', ' ', ' ' /* 8 bytes */
|
#define USB_MANUFACTURER 'J', 'u', 'm', 'p', 'e', 'r', ' ', ' ' /* 8 bytes */
|
||||||
#define USB_PRODUCT 'T', '1', '8', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */
|
#define USB_PRODUCT 'T', '1', '8', ' ', ' ', ' ', ' ', ' ' /* 8 Bytes */
|
||||||
#elif defined(RADIO_TX16S)
|
#elif defined(RADIO_TX16S)
|
||||||
#define USB_NAME "RadioMas TX16S"
|
#define USB_NAME "RM TX16S"
|
||||||
#define USB_MANUFACTURER 'R', 'a', 'd', 'i', 'o', 'M', 'a', 's' /* 8 bytes */
|
#define USB_MANUFACTURER 'R', 'M', '_', 'T', 'X', ' ', ' ', ' ' /* 8 bytes */
|
||||||
#define USB_PRODUCT 'T', 'X', '1', '6', 'S', ' ', ' ', ' ' /* 8 Bytes */
|
#define USB_PRODUCT 'R', 'M', ' ', 'T', 'X', '1', '6', 'S' /* 8 Bytes */
|
||||||
#elif defined(PCBX10)
|
#elif defined(PCBX10)
|
||||||
#define USB_NAME "FrSky X10"
|
#define USB_NAME "FrSky X10"
|
||||||
#define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
|
#define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
|
||||||
|
@ -596,7 +596,6 @@ void audioConsumeCurrentBuffer();
|
||||||
#define audioEnableIrq() // interrupts must stay enabled on Horus
|
#define audioEnableIrq() // interrupts must stay enabled on Horus
|
||||||
#if defined(PCBX12S)
|
#if defined(PCBX12S)
|
||||||
#define setSampleRate(freq)
|
#define setSampleRate(freq)
|
||||||
void audioWaitReady();
|
|
||||||
#else
|
#else
|
||||||
void setSampleRate(uint32_t frequency);
|
void setSampleRate(uint32_t frequency);
|
||||||
#define audioWaitReady()
|
#define audioWaitReady()
|
||||||
|
|
|
@ -443,7 +443,6 @@ void audioOn();
|
||||||
void audioOff();
|
void audioOff();
|
||||||
bool isAudioReady();
|
bool isAudioReady();
|
||||||
bool audioChipReset();
|
bool audioChipReset();
|
||||||
void audioWaitReady();
|
|
||||||
|
|
||||||
#define SPI_SPEED_2 0
|
#define SPI_SPEED_2 0
|
||||||
#define SPI_SPEED_4 1
|
#define SPI_SPEED_4 1
|
||||||
|
|
|
@ -130,6 +130,18 @@ elseif(PCB STREQUAL X7)
|
||||||
set(LUA_EXPORT lua_export_t12)
|
set(LUA_EXPORT lua_export_t12)
|
||||||
add_definitions(-DRADIO_T12)
|
add_definitions(-DRADIO_T12)
|
||||||
add_definitions(-DEEPROM_VARIANT=0x4001)
|
add_definitions(-DEEPROM_VARIANT=0x4001)
|
||||||
|
elseif(PCBREV STREQUAL TX12)
|
||||||
|
option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" ON)
|
||||||
|
set(FLAVOUR tx12)
|
||||||
|
set(NAVIGATION_TYPE x7)
|
||||||
|
set(CPU_TYPE STM32F2)
|
||||||
|
set(CPU_TYPE_FULL STM32F205xE) # for size report
|
||||||
|
set(LINKER_SCRIPT targets/taranis/stm32f2_flash.ld)
|
||||||
|
set(ROTARY_ENCODER YES)
|
||||||
|
set(LUA_EXPORT lua_export_tx12)
|
||||||
|
set(BLUETOOTH NO)
|
||||||
|
add_definitions(-DRADIO_TX12)
|
||||||
|
add_definitions(-DEEPROM_VARIANT=0x4002)
|
||||||
elseif(PCBREV STREQUAL ACCESS)
|
elseif(PCBREV STREQUAL ACCESS)
|
||||||
option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF)
|
option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" OFF)
|
||||||
option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" ON)
|
option(INTERNAL_MODULE_PXX2 "Support for PXX2 internal module" ON)
|
||||||
|
@ -308,7 +320,7 @@ if(INTERNAL_MODULE_SERIAL)
|
||||||
${TARGET_SRC}
|
${TARGET_SRC}
|
||||||
../common/arm/stm32/intmodule_serial_driver.cpp
|
../common/arm/stm32/intmodule_serial_driver.cpp
|
||||||
)
|
)
|
||||||
elseif(NOT (PCB STREQUAL X7 AND PCBREV STREQUAL T12))
|
elseif(INTERNAL_MODULE_PXX1 OR INTERNAL_MODULE_PXX2)
|
||||||
set(TARGET_SRC
|
set(TARGET_SRC
|
||||||
${TARGET_SRC}
|
${TARGET_SRC}
|
||||||
intmodule_pulses_driver.cpp
|
intmodule_pulses_driver.cpp
|
||||||
|
|
|
@ -265,10 +265,16 @@ void boardOff()
|
||||||
// this function must not return!
|
// this function must not return!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined (RADIO_TX12)
|
||||||
|
#define BATTERY_DIVIDER 22830
|
||||||
|
#else
|
||||||
|
#define BATTERY_DIVIDER 26214
|
||||||
|
#endif
|
||||||
|
|
||||||
uint16_t getBatteryVoltage()
|
uint16_t getBatteryVoltage()
|
||||||
{
|
{
|
||||||
int32_t instant_vbat = anaIn(TX_VOLTAGE); // using filtered ADC value on purpose
|
int32_t instant_vbat = anaIn(TX_VOLTAGE); // using filtered ADC value on purpose
|
||||||
instant_vbat = (instant_vbat * BATT_SCALE * (128 + g_eeGeneral.txVoltageCalibration) ) / 26214;
|
instant_vbat = (instant_vbat * BATT_SCALE * (128 + g_eeGeneral.txVoltageCalibration) ) / BATTERY_DIVIDER;
|
||||||
instant_vbat += 20; // add 0.2V because of the diode TODO check if this is needed, but removal will break existing calibrations!
|
instant_vbat += 20; // add 0.2V because of the diode TODO check if this is needed, but removal will break existing calibrations!
|
||||||
return (uint16_t)instant_vbat;
|
return (uint16_t)instant_vbat;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,8 +24,12 @@
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include "definitions.h"
|
#include "definitions.h"
|
||||||
#include "opentx_constants.h"
|
#include "opentx_constants.h"
|
||||||
#include "hal.h"
|
|
||||||
#include "board_common.h"
|
#include "board_common.h"
|
||||||
|
#include "hal.h"
|
||||||
|
|
||||||
|
#if defined(RADIO_TX12)
|
||||||
|
#define NAVIGATION_X7_TX12
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||||
// Rotary Encoder driver
|
// Rotary Encoder driver
|
||||||
|
@ -238,6 +242,26 @@ enum EnumKeys
|
||||||
KEY_PAGE,
|
KEY_PAGE,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(KEYS_GPIO_REG_PAGEUP)
|
||||||
|
KEY_PAGEUP,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(KEYS_GPIO_REG_PAGEDN)
|
||||||
|
KEY_PAGEDN,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(KEYS_GPIO_REG_SYS)
|
||||||
|
KEY_SYS,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(KEYS_GPIO_REG_MDL)
|
||||||
|
KEY_MODEL,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(KEYS_GPIO_REG_TELE)
|
||||||
|
KEY_TELE,
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(KEYS_GPIO_REG_PLUS)
|
#if defined(KEYS_GPIO_REG_PLUS)
|
||||||
KEY_PLUS,
|
KEY_PLUS,
|
||||||
KEY_MINUS,
|
KEY_MINUS,
|
||||||
|
@ -307,8 +331,11 @@ enum EnumSwitches
|
||||||
SW_SG,
|
SW_SG,
|
||||||
SW_SH
|
SW_SH
|
||||||
};
|
};
|
||||||
#define IS_3POS(x) ((x) != SW_SF && (x) != SW_SH)
|
#if defined(RADIO_TX12)
|
||||||
|
#define IS_3POS(x) ((x) != SW_SA && (x) != SW_SD)
|
||||||
|
#else
|
||||||
|
#define IS_3POS(x) ((x) != SW_SF && (x) != SW_SH)
|
||||||
|
#endif
|
||||||
enum EnumSwitchesPositions
|
enum EnumSwitchesPositions
|
||||||
{
|
{
|
||||||
SW_SA0,
|
SW_SA0,
|
||||||
|
@ -323,7 +350,7 @@ enum EnumSwitchesPositions
|
||||||
SW_SD0,
|
SW_SD0,
|
||||||
SW_SD1,
|
SW_SD1,
|
||||||
SW_SD2,
|
SW_SD2,
|
||||||
#if defined(PCBX9) || defined(PCBXLITES) || defined(PCBX9LITES)
|
#if defined(PCBX9) || defined(PCBXLITES) || defined(PCBX9LITES) || defined(RADIO_TX12)
|
||||||
SW_SE0,
|
SW_SE0,
|
||||||
SW_SE1,
|
SW_SE1,
|
||||||
SW_SE2,
|
SW_SE2,
|
||||||
|
@ -338,7 +365,7 @@ enum EnumSwitchesPositions
|
||||||
SW_SG1,
|
SW_SG1,
|
||||||
SW_SG2,
|
SW_SG2,
|
||||||
#endif
|
#endif
|
||||||
#if defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E) || defined(PCBX7)
|
#if defined(PCBX9D) || defined(PCBX9DP) || defined(PCBX9E) || (defined(PCBX7) && !defined(RADIO_TX12))
|
||||||
SW_SH0,
|
SW_SH0,
|
||||||
SW_SH1,
|
SW_SH1,
|
||||||
SW_SH2,
|
SW_SH2,
|
||||||
|
@ -410,6 +437,11 @@ enum EnumSwitchesPositions
|
||||||
#define STORAGE_NUM_SWITCHES NUM_SWITCHES
|
#define STORAGE_NUM_SWITCHES NUM_SWITCHES
|
||||||
#define DEFAULT_SWITCH_CONFIG (SWITCH_2POS << 10) + (SWITCH_2POS << 8) + (SWITCH_3POS << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0)
|
#define DEFAULT_SWITCH_CONFIG (SWITCH_2POS << 10) + (SWITCH_2POS << 8) + (SWITCH_3POS << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0)
|
||||||
#define DEFAULT_POTS_CONFIG (POT_WITHOUT_DETENT << 0) + (POT_WITHOUT_DETENT << 2); // S1 = pot without detent, S2 = pot with detent
|
#define DEFAULT_POTS_CONFIG (POT_WITHOUT_DETENT << 0) + (POT_WITHOUT_DETENT << 2); // S1 = pot without detent, S2 = pot with detent
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define NUM_SWITCHES 8
|
||||||
|
#define STORAGE_NUM_SWITCHES NUM_SWITCHES
|
||||||
|
#define DEFAULT_SWITCH_CONFIG (SWITCH_3POS << 10) + (SWITCH_3POS << 8) + (SWITCH_TOGGLE << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_TOGGLE << 0)
|
||||||
|
#define DEFAULT_POTS_CONFIG (POT_WITH_DETENT << 0) + (POT_WITH_DETENT << 2);
|
||||||
#elif defined(PCBX7ACCESS)
|
#elif defined(PCBX7ACCESS)
|
||||||
#define NUM_SWITCHES 7
|
#define NUM_SWITCHES 7
|
||||||
#define STORAGE_NUM_SWITCHES 8
|
#define STORAGE_NUM_SWITCHES 8
|
||||||
|
@ -434,8 +466,8 @@ enum EnumSwitchesPositions
|
||||||
#define NUM_SWITCHES 18 // yes, it's perfect like that !
|
#define NUM_SWITCHES 18 // yes, it's perfect like that !
|
||||||
#define STORAGE_NUM_SWITCHES NUM_SWITCHES
|
#define STORAGE_NUM_SWITCHES NUM_SWITCHES
|
||||||
#define DEFAULT_SWITCH_CONFIG (SWITCH_TOGGLE << 14) + (SWITCH_3POS << 12) + (SWITCH_2POS << 10) + (SWITCH_3POS << 8) + (SWITCH_3POS << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0)
|
#define DEFAULT_SWITCH_CONFIG (SWITCH_TOGGLE << 14) + (SWITCH_3POS << 12) + (SWITCH_2POS << 10) + (SWITCH_3POS << 8) + (SWITCH_3POS << 6) + (SWITCH_3POS << 4) + (SWITCH_3POS << 2) + (SWITCH_3POS << 0)
|
||||||
#define DEFAULT_POTS_CONFIG (POT_WITH_DETENT << 0) + (POT_WITH_DETENT << 2);
|
#define DEFAULT_POTS_CONFIG (POT_WITH_DETENT << 0) + (POT_WITH_DETENT << 2); // S1 = pot without detent, S2 = pot with detent
|
||||||
#define DEFAULT_SLIDERS_CONFIG (SLIDER_WITH_DETENT << 3) + (SLIDER_WITH_DETENT << 2) + (SLIDER_WITH_DETENT << 3) + (SLIDER_WITH_DETENT << 2) + (SLIDER_WITH_DETENT << 1) + (SLIDER_WITH_DETENT << 0)
|
#define DEFAULT_SLIDERS_CONFIG (SLIDER_WITH_DETENT << 3) + (SLIDER_WITH_DETENT << 2) + (SLIDER_WITH_DETENT << 1) + (SLIDER_WITH_DETENT << 0)
|
||||||
#elif defined(RADIO_X9DP2019)
|
#elif defined(RADIO_X9DP2019)
|
||||||
#define NUM_SWITCHES 9
|
#define NUM_SWITCHES 9
|
||||||
#define STORAGE_NUM_SWITCHES NUM_SWITCHES
|
#define STORAGE_NUM_SWITCHES NUM_SWITCHES
|
||||||
|
@ -674,9 +706,15 @@ uint8_t isBacklightEnabled();
|
||||||
#if !defined(SIMU)
|
#if !defined(SIMU)
|
||||||
void usbJoystickUpdate();
|
void usbJoystickUpdate();
|
||||||
#endif
|
#endif
|
||||||
#define USB_NAME "FrSky Taranis"
|
#if defined(RADIO_TX12)
|
||||||
#define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
|
#define USB_NAME "Radiomaster TX12"
|
||||||
#define USB_PRODUCT 'T', 'a', 'r', 'a', 'n', 'i', 's', ' ' /* 8 Bytes */
|
#define USB_MANUFACTURER 'R', 'M', '_', 'T', 'X', ' ', ' ', ' ' /* 8 bytes */
|
||||||
|
#define USB_PRODUCT 'R', 'M', ' ', 'T', 'X', '1', '2', ' ' /* 8 Bytes */
|
||||||
|
#else
|
||||||
|
#define USB_NAME "FrSky Taranis"
|
||||||
|
#define USB_MANUFACTURER 'F', 'r', 'S', 'k', 'y', ' ', ' ', ' ' /* 8 bytes */
|
||||||
|
#define USB_PRODUCT 'T', 'a', 'r', 'a', 'n', 'i', 's', ' ' /* 8 Bytes */
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(SIMU)
|
#if defined(__cplusplus) && !defined(SIMU)
|
||||||
}
|
}
|
||||||
|
@ -744,7 +782,6 @@ void audioEnd() ;
|
||||||
void dacStart();
|
void dacStart();
|
||||||
void dacStop();
|
void dacStop();
|
||||||
void setSampleRate(uint32_t frequency);
|
void setSampleRate(uint32_t frequency);
|
||||||
#define audioWaitReady()
|
|
||||||
#define VOLUME_LEVEL_MAX 23
|
#define VOLUME_LEVEL_MAX 23
|
||||||
#define VOLUME_LEVEL_DEF 12
|
#define VOLUME_LEVEL_DEF 12
|
||||||
#if !defined(SOFTWARE_VOLUME)
|
#if !defined(SOFTWARE_VOLUME)
|
||||||
|
@ -848,7 +885,11 @@ void ledBlue();
|
||||||
#define IS_LCD_RESET_NEEDED() true
|
#define IS_LCD_RESET_NEEDED() true
|
||||||
#define LCD_CONTRAST_MIN 10
|
#define LCD_CONTRAST_MIN 10
|
||||||
#define LCD_CONTRAST_MAX 30
|
#define LCD_CONTRAST_MAX 30
|
||||||
#define LCD_CONTRAST_DEFAULT 15
|
#if defined(RADIO_TX12)
|
||||||
|
#define LCD_CONTRAST_DEFAULT 21
|
||||||
|
#else
|
||||||
|
#define LCD_CONTRAST_DEFAULT 15
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(PCBX9D) || defined(PCBX9E) || (defined(PCBX9DP) && PCBREV < 2019)
|
#if defined(PCBX9D) || defined(PCBX9E) || (defined(PCBX9DP) && PCBREV < 2019)
|
||||||
|
|
|
@ -65,6 +65,21 @@
|
||||||
#define KEYS_GPIO_PIN_LEFT GPIO_Pin_7 // PD.07
|
#define KEYS_GPIO_PIN_LEFT GPIO_Pin_7 // PD.07
|
||||||
#define KEYS_GPIO_REG_RIGHT GPIOD->IDR
|
#define KEYS_GPIO_REG_RIGHT GPIOD->IDR
|
||||||
#define KEYS_GPIO_PIN_RIGHT GPIO_Pin_3 // PD.03
|
#define KEYS_GPIO_PIN_RIGHT GPIO_Pin_3 // PD.03
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define KEYS_GPIO_REG_PAGEUP GPIOD->IDR
|
||||||
|
#define KEYS_GPIO_PIN_PAGEUP GPIO_Pin_3 // PD.03
|
||||||
|
#define KEYS_GPIO_REG_PAGEDN GPIOD->IDR
|
||||||
|
#define KEYS_GPIO_PIN_PAGEDN GPIO_Pin_7 // PD.07
|
||||||
|
#define KEYS_GPIO_REG_EXIT GPIOB->IDR
|
||||||
|
#define KEYS_GPIO_PIN_EXIT GPIO_Pin_3 // PB.03
|
||||||
|
#define KEYS_GPIO_REG_ENTER GPIOA->IDR
|
||||||
|
#define KEYS_GPIO_PIN_ENTER GPIO_Pin_13 // PA.13
|
||||||
|
#define KEYS_GPIO_REG_SYS GPIOB->IDR
|
||||||
|
#define KEYS_GPIO_PIN_SYS GPIO_Pin_4 // PB.04
|
||||||
|
#define KEYS_GPIO_REG_MDL GPIOE->IDR
|
||||||
|
#define KEYS_GPIO_PIN_MDL GPIO_Pin_11 // PE.11
|
||||||
|
#define KEYS_GPIO_REG_TELE GPIOD->IDR
|
||||||
|
#define KEYS_GPIO_PIN_TELE GPIO_Pin_2 // PD.02
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
#define KEYS_GPIO_REG_PAGE GPIOD->IDR
|
#define KEYS_GPIO_REG_PAGE GPIOD->IDR
|
||||||
#define KEYS_GPIO_PIN_PAGE GPIO_Pin_3 // PD.03
|
#define KEYS_GPIO_PIN_PAGE GPIO_Pin_3 // PD.03
|
||||||
|
@ -162,7 +177,23 @@
|
||||||
#define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOE
|
#define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOE
|
||||||
#define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource10
|
#define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource10
|
||||||
#define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource12
|
#define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource12
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define ROTARY_ENCODER_NAVIGATION
|
||||||
|
#define ROTARY_ENCODER_GPIO GPIOE
|
||||||
|
#define ROTARY_ENCODER_GPIO_PIN_A GPIO_Pin_9 // PE.9
|
||||||
|
#define ROTARY_ENCODER_GPIO_PIN_B GPIO_Pin_10 // PE.10
|
||||||
|
#define ROTARY_ENCODER_POSITION() ((ROTARY_ENCODER_GPIO->IDR >> 9) & 0x03)
|
||||||
|
#define ROTARY_ENCODER_EXTI_LINE1 EXTI_Line9
|
||||||
|
#define ROTARY_ENCODER_EXTI_LINE2 EXTI_Line10
|
||||||
|
#define ROTARY_ENCODER_EXTI_IRQn1 EXTI9_5_IRQn
|
||||||
|
#define ROTARY_ENCODER_EXTI_IRQHandler1 EXTI9_5_IRQHandler
|
||||||
|
#define ROTARY_ENCODER_EXTI_IRQn2 EXTI15_10_IRQn
|
||||||
|
#define ROTARY_ENCODER_EXTI_IRQHandler2 EXTI15_10_IRQHandler
|
||||||
|
#define ROTARY_ENCODER_EXTI_PortSource EXTI_PortSourceGPIOE
|
||||||
|
#define ROTARY_ENCODER_EXTI_PinSource1 EXTI_PinSource9
|
||||||
|
#define ROTARY_ENCODER_EXTI_PinSource2 EXTI_PinSource10
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||||
#define ROTARY_ENCODER_RCC_APB1Periph RCC_APB1Periph_TIM5
|
#define ROTARY_ENCODER_RCC_APB1Periph RCC_APB1Periph_TIM5
|
||||||
#define ROTARY_ENCODER_TIMER TIM5
|
#define ROTARY_ENCODER_TIMER TIM5
|
||||||
|
@ -302,6 +333,11 @@
|
||||||
#define SWITCHES_GPIO_PIN_A_H GPIO_Pin_1 // PE.01
|
#define SWITCHES_GPIO_PIN_A_H GPIO_Pin_1 // PE.01
|
||||||
#define SWITCHES_GPIO_REG_A_L GPIOE->IDR
|
#define SWITCHES_GPIO_REG_A_L GPIOE->IDR
|
||||||
#define SWITCHES_GPIO_PIN_A_L GPIO_Pin_0 // PE.00
|
#define SWITCHES_GPIO_PIN_A_L GPIO_Pin_0 // PE.00
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define STORAGE_SWITCH_A
|
||||||
|
#define HARDWARE_SWITCH_A
|
||||||
|
#define SWITCHES_GPIO_REG_A GPIOC->IDR
|
||||||
|
#define SWITCHES_GPIO_PIN_A GPIO_Pin_13 // PC.13
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
#define STORAGE_SWITCH_A
|
#define STORAGE_SWITCH_A
|
||||||
#define HARDWARE_SWITCH_A
|
#define HARDWARE_SWITCH_A
|
||||||
|
@ -369,6 +405,13 @@
|
||||||
#define SWITCHES_GPIO_PIN_C_L GPIO_Pin_2 // PE.02
|
#define SWITCHES_GPIO_PIN_C_L GPIO_Pin_2 // PE.02
|
||||||
#define SWITCHES_GPIO_REG_C_H GPIOE->IDR
|
#define SWITCHES_GPIO_REG_C_H GPIOE->IDR
|
||||||
#define SWITCHES_GPIO_PIN_C_H GPIO_Pin_3 // PE.03
|
#define SWITCHES_GPIO_PIN_C_H GPIO_Pin_3 // PE.03
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define STORAGE_SWITCH_C
|
||||||
|
#define HARDWARE_SWITCH_C
|
||||||
|
#define SWITCHES_GPIO_REG_C_L GPIOD->IDR
|
||||||
|
#define SWITCHES_GPIO_PIN_C_L GPIO_Pin_11 // PD.11
|
||||||
|
#define SWITCHES_GPIO_REG_C_H GPIOE->IDR
|
||||||
|
#define SWITCHES_GPIO_PIN_C_H GPIO_Pin_0 // PE.00
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
#define STORAGE_SWITCH_C
|
#define STORAGE_SWITCH_C
|
||||||
#define HARDWARE_SWITCH_C
|
#define HARDWARE_SWITCH_C
|
||||||
|
@ -411,6 +454,11 @@
|
||||||
#define SWITCHES_GPIO_PIN_D_L GPIO_Pin_4 // PB.04
|
#define SWITCHES_GPIO_PIN_D_L GPIO_Pin_4 // PB.04
|
||||||
#define SWITCHES_GPIO_REG_D_H GPIOB->IDR
|
#define SWITCHES_GPIO_REG_D_H GPIOB->IDR
|
||||||
#define SWITCHES_GPIO_PIN_D_H GPIO_Pin_5 // PB.05
|
#define SWITCHES_GPIO_PIN_D_H GPIO_Pin_5 // PB.05
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define STORAGE_SWITCH_D
|
||||||
|
#define HARDWARE_SWITCH_D
|
||||||
|
#define SWITCHES_GPIO_REG_D GPIOE->IDR
|
||||||
|
#define SWITCHES_GPIO_PIN_D GPIO_Pin_8 // PE.08
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
#define STORAGE_SWITCH_D
|
#define STORAGE_SWITCH_D
|
||||||
#define HARDWARE_SWITCH_D
|
#define HARDWARE_SWITCH_D
|
||||||
|
@ -452,6 +500,13 @@
|
||||||
#define HARDWARE_SWITCH_E
|
#define HARDWARE_SWITCH_E
|
||||||
#define SWITCHES_GPIO_REG_E GPIOA->IDR
|
#define SWITCHES_GPIO_REG_E GPIOA->IDR
|
||||||
#define SWITCHES_GPIO_PIN_E GPIO_Pin_5 // PA.05
|
#define SWITCHES_GPIO_PIN_E GPIO_Pin_5 // PA.05
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define STORAGE_SWITCH_E
|
||||||
|
#define HARDWARE_SWITCH_E
|
||||||
|
#define SWITCHES_GPIO_REG_E_H GPIOE->IDR
|
||||||
|
#define SWITCHES_GPIO_PIN_E_H GPIO_Pin_13 // PE.13
|
||||||
|
#define SWITCHES_GPIO_REG_E_L GPIOE->IDR
|
||||||
|
#define SWITCHES_GPIO_PIN_E_L GPIO_Pin_7 // PE.07
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
// no SWE
|
// no SWE
|
||||||
#else
|
#else
|
||||||
|
@ -483,6 +538,13 @@
|
||||||
#define SWITCHES_GPIO_PIN_F GPIO_Pin_3 // PC.03
|
#define SWITCHES_GPIO_PIN_F GPIO_Pin_3 // PC.03
|
||||||
#elif defined(PCBX9LITE)
|
#elif defined(PCBX9LITE)
|
||||||
// no SWF
|
// no SWF
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define STORAGE_SWITCH_F
|
||||||
|
#define HARDWARE_SWITCH_F
|
||||||
|
#define SWITCHES_GPIO_REG_F_L GPIOE->IDR
|
||||||
|
#define SWITCHES_GPIO_PIN_F_L GPIO_Pin_1 // PE.01
|
||||||
|
#define SWITCHES_GPIO_REG_F_H GPIOE->IDR
|
||||||
|
#define SWITCHES_GPIO_PIN_F_H GPIO_Pin_2 // PE.02
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
#define STORAGE_SWITCH_F
|
#define STORAGE_SWITCH_F
|
||||||
#define HARDWARE_SWITCH_F
|
#define HARDWARE_SWITCH_F
|
||||||
|
@ -530,6 +592,7 @@
|
||||||
#define SWITCHES_GPIO_PIN_H GPIO_Pin_14 // PD.14
|
#define SWITCHES_GPIO_PIN_H GPIO_Pin_14 // PD.14
|
||||||
#elif defined(PCBXLITE) || defined(PCBX9LITE)
|
#elif defined(PCBXLITE) || defined(PCBX9LITE)
|
||||||
// no SWH
|
// no SWH
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
#define STORAGE_SWITCH_H
|
#define STORAGE_SWITCH_H
|
||||||
#define HARDWARE_SWITCH_H
|
#define HARDWARE_SWITCH_H
|
||||||
|
@ -558,6 +621,15 @@
|
||||||
#define SWITCHES_GPIO_REG_I GPIOC->IDR
|
#define SWITCHES_GPIO_REG_I GPIOC->IDR
|
||||||
#define SWITCHES_GPIO_PIN_I GPIO_Pin_13 // PC.13
|
#define SWITCHES_GPIO_PIN_I GPIO_Pin_13 // PC.13
|
||||||
#define STORAGE_SWITCH_J
|
#define STORAGE_SWITCH_J
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define STORAGE_SWITCH_I
|
||||||
|
#define HARDWARE_SWITCH_I
|
||||||
|
#define SWITCHES_GPIO_REG_I GPIOE->IDR
|
||||||
|
#define SWITCHES_GPIO_PIN_I GPIO_Pin_14 // PE.14
|
||||||
|
#define STORAGE_SWITCH_J
|
||||||
|
#define HARDWARE_SWITCH_J
|
||||||
|
#define SWITCHES_GPIO_REG_J GPIOD->IDR
|
||||||
|
#define SWITCHES_GPIO_PIN_J GPIO_Pin_14 // PD.14
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
#define STORAGE_SWITCH_I
|
#define STORAGE_SWITCH_I
|
||||||
#define HARDWARE_SWITCH_I
|
#define HARDWARE_SWITCH_I
|
||||||
|
@ -668,11 +740,18 @@
|
||||||
#define KEYS_GPIOC_PINS (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)
|
#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(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
|
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
|
||||||
#define KEYS_GPIOA_PINS GPIO_Pin_5
|
#define KEYS_GPIOA_PINS GPIO_Pin_5
|
||||||
#define KEYS_GPIOC_PINS (GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3)
|
#define KEYS_GPIOC_PINS (GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3)
|
||||||
#define KEYS_GPIOD_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15)
|
#define KEYS_GPIOD_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15)
|
||||||
#define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)
|
#define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
|
||||||
|
#define KEYS_GPIOA_PINS (GPIO_Pin_13 | GPIO_Pin_5)
|
||||||
|
#define KEYS_GPIOB_PINS (GPIO_Pin_3 | GPIO_Pin_4)
|
||||||
|
#define KEYS_GPIOC_PINS (GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3|GPIO_Pin_13)
|
||||||
|
#define KEYS_GPIOD_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15)
|
||||||
|
#define KEYS_GPIOE_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_8| GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15)
|
||||||
#elif defined(RADIO_X7ACCESS)
|
#elif defined(RADIO_X7ACCESS)
|
||||||
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
|
#define KEYS_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE)
|
||||||
#define KEYS_GPIOA_PINS GPIO_Pin_5
|
#define KEYS_GPIOA_PINS GPIO_Pin_5
|
||||||
|
@ -1079,8 +1158,10 @@
|
||||||
#define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream5_IRQHandler
|
#define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream5_IRQHandler
|
||||||
#define INTMODULE_DMA_FLAG_TC DMA_IT_TCIF5
|
#define INTMODULE_DMA_FLAG_TC DMA_IT_TCIF5
|
||||||
#define INTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
|
#define INTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12) || defined(RADIO_TX12)
|
||||||
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1)
|
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_DMA1)
|
||||||
|
#define INTMODULE_RCC_APB1Periph (RCC_APB1Periph_USART3 | RCC_APB1Periph_TIM2)
|
||||||
|
#define INTMODULE_RCC_APB2Periph 0
|
||||||
#define INTMODULE_PWR_GPIO GPIOC
|
#define INTMODULE_PWR_GPIO GPIOC
|
||||||
#define INTMODULE_PWR_GPIO_PIN GPIO_Pin_6 // PC.06
|
#define INTMODULE_PWR_GPIO_PIN GPIO_Pin_6 // PC.06
|
||||||
#define INTMODULE_GPIO GPIOB
|
#define INTMODULE_GPIO GPIOB
|
||||||
|
@ -1092,8 +1173,6 @@
|
||||||
#define INTMODULE_GPIO_AF GPIO_AF_USART3
|
#define INTMODULE_GPIO_AF GPIO_AF_USART3
|
||||||
#define INTMODULE_USART_IRQn USART3_IRQn
|
#define INTMODULE_USART_IRQn USART3_IRQn
|
||||||
#define INTMODULE_USART_IRQHandler USART3_IRQHandler
|
#define INTMODULE_USART_IRQHandler USART3_IRQHandler
|
||||||
#define INTMODULE_RCC_APB1Periph RCC_APB1Periph_TIM2
|
|
||||||
#define INTMODULE_RCC_APB2Periph RCC_APB1Periph_USART3
|
|
||||||
#define INTMODULE_TIMER TIM2
|
#define INTMODULE_TIMER TIM2
|
||||||
#define INTMODULE_TIMER_IRQn TIM2_IRQn
|
#define INTMODULE_TIMER_IRQn TIM2_IRQn
|
||||||
#define INTMODULE_TIMER_IRQHandler TIM2_IRQHandler
|
#define INTMODULE_TIMER_IRQHandler TIM2_IRQHandler
|
||||||
|
@ -1169,30 +1248,6 @@
|
||||||
#define EXTMODULE_USART_TX_DMA_STREAM DMA2_Stream6
|
#define EXTMODULE_USART_TX_DMA_STREAM DMA2_Stream6
|
||||||
#define EXTMODULE_USART_RX_DMA_CHANNEL DMA_Channel_5
|
#define EXTMODULE_USART_RX_DMA_CHANNEL DMA_Channel_5
|
||||||
#define EXTMODULE_USART_RX_DMA_STREAM DMA2_Stream1
|
#define EXTMODULE_USART_RX_DMA_STREAM DMA2_Stream1
|
||||||
#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)
|
|
||||||
#elif defined(RADIO_X9DP2019)
|
#elif defined(RADIO_X9DP2019)
|
||||||
#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
|
#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2)
|
||||||
#define EXTMODULE_RCC_APB2Periph (RCC_APB2Periph_TIM8 | RCC_APB2Periph_USART6)
|
#define EXTMODULE_RCC_APB2Periph (RCC_APB2Periph_TIM8 | RCC_APB2Periph_USART6)
|
||||||
|
@ -1225,14 +1280,14 @@
|
||||||
#define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(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 IS_EXTERNAL_MODULE_ON() (GPIO_ReadInputDataBit(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) == Bit_SET)
|
||||||
#define EXTMODULE_TX_GPIO GPIOA
|
#define EXTMODULE_TX_GPIO GPIOA
|
||||||
#define EXTMODULE_TX_GPIO_PIN GPIO_Pin_7 // PA.07
|
#define EXTMODULE_TX_GPIO_PIN GPIO_Pin_7
|
||||||
#define EXTMODULE_TX_GPIO_PinSource GPIO_PinSource7
|
#define EXTMODULE_TX_GPIO_PinSource GPIO_PinSource7 // PA.07
|
||||||
#define EXTMODULE_TIMER TIM8
|
#define EXTMODULE_TIMER TIM8
|
||||||
#define EXTMODULE_TIMER_TX_GPIO_AF GPIO_AF_TIM8 // TIM8_CH1N
|
#define EXTMODULE_TIMER_TX_GPIO_AF GPIO_AF_TIM8 // TIM8_CH1N
|
||||||
#define EXTMODULE_TIMER_CC_IRQn TIM8_CC_IRQn
|
#define EXTMODULE_TIMER_CC_IRQn TIM8_CC_IRQn
|
||||||
#define EXTMODULE_TIMER_CC_IRQHandler TIM8_CC_IRQHandler
|
#define EXTMODULE_TIMER_CC_IRQHandler TIM8_CC_IRQHandler
|
||||||
#define EXTMODULE_TIMER_DMA_CHANNEL DMA_Channel_7 // TIM8_UP
|
#define EXTMODULE_TIMER_DMA_CHANNEL DMA_Channel_7
|
||||||
#define EXTMODULE_TIMER_DMA_STREAM DMA2_Stream1 // TIM8_UP
|
#define EXTMODULE_TIMER_DMA_STREAM DMA2_Stream1
|
||||||
#define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream1_IRQn
|
#define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream1_IRQn
|
||||||
#define EXTMODULE_TIMER_DMA_STREAM_IRQHandler DMA2_Stream1_IRQHandler
|
#define EXTMODULE_TIMER_DMA_STREAM_IRQHandler DMA2_Stream1_IRQHandler
|
||||||
#define EXTMODULE_TIMER_DMA_FLAG_TC DMA_IT_TCIF1
|
#define EXTMODULE_TIMER_DMA_FLAG_TC DMA_IT_TCIF1
|
||||||
|
@ -1376,7 +1431,7 @@
|
||||||
#define TELEMETRY_EXTI_IRQn EXTI9_5_IRQn
|
#define TELEMETRY_EXTI_IRQn EXTI9_5_IRQn
|
||||||
#define TELEMETRY_EXTI_TRIGGER EXTI_Trigger_Rising
|
#define TELEMETRY_EXTI_TRIGGER EXTI_Trigger_Rising
|
||||||
|
|
||||||
#if defined(RADIO_X7) || defined(RADIO_X7ACCESS)
|
#if defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(RADIO_TX12)
|
||||||
#define TELEMETRY_EXTI_REUSE_INTERRUPT_ROTARY_ENCODER
|
#define TELEMETRY_EXTI_REUSE_INTERRUPT_ROTARY_ENCODER
|
||||||
#elif defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019)
|
#elif defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_X9DP2019)
|
||||||
#define TELEMETRY_EXTI_IRQHandler EXTI9_5_IRQHandler
|
#define TELEMETRY_EXTI_IRQHandler EXTI9_5_IRQHandler
|
||||||
|
@ -1389,7 +1444,7 @@
|
||||||
#define TELEMETRY_TIMER_IRQHandler TIM1_TRG_COM_TIM11_IRQHandler
|
#define TELEMETRY_TIMER_IRQHandler TIM1_TRG_COM_TIM11_IRQHandler
|
||||||
|
|
||||||
// PCBREV
|
// PCBREV
|
||||||
#if defined(PCBX7)
|
#if defined(RADIO_X7)
|
||||||
#define PCBREV_RCC_AHB1Periph RCC_AHB1Periph_GPIOA
|
#define PCBREV_RCC_AHB1Periph RCC_AHB1Periph_GPIOA
|
||||||
#define PCBREV_GPIO GPIOA
|
#define PCBREV_GPIO GPIOA
|
||||||
#define PCBREV_GPIO_PIN GPIO_Pin_14 // PA.14
|
#define PCBREV_GPIO_PIN GPIO_Pin_14 // PA.14
|
||||||
|
@ -1472,7 +1527,7 @@
|
||||||
#define INTMODULE_HEARTBEAT_EXTI_PinSource GPIO_PinSource7
|
#define INTMODULE_HEARTBEAT_EXTI_PinSource GPIO_PinSource7
|
||||||
#define INTMODULE_HEARTBEAT_EXTI_LINE EXTI_Line7
|
#define INTMODULE_HEARTBEAT_EXTI_LINE EXTI_Line7
|
||||||
#define INTMODULE_HEARTBEAT_EXTI_IRQn EXTI9_5_IRQn
|
#define INTMODULE_HEARTBEAT_EXTI_IRQn EXTI9_5_IRQn
|
||||||
#elif defined(RADIO_X7)
|
#elif defined(RADIO_X7) || defined(RADIO_TX12)
|
||||||
#define INTMODULE_HEARTBEAT
|
#define INTMODULE_HEARTBEAT
|
||||||
#define INTMODULE_HEARTBEAT_REUSE_INTERRUPT_ROTARY_ENCODER
|
#define INTMODULE_HEARTBEAT_REUSE_INTERRUPT_ROTARY_ENCODER
|
||||||
#define INTMODULE_HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOC
|
#define INTMODULE_HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOC
|
||||||
|
@ -1657,6 +1712,9 @@
|
||||||
#define KEYS_BACKLIGHT_RCC_AHB1Periph 0
|
#define KEYS_BACKLIGHT_RCC_AHB1Periph 0
|
||||||
|
|
||||||
// LCD driver
|
// LCD driver
|
||||||
|
#if defined(RADIO_TX12) || defined(RADIO_T12)
|
||||||
|
#define LCD_VERTICAL_INVERT
|
||||||
|
#endif
|
||||||
#if defined(PCBX9E)
|
#if defined(PCBX9E)
|
||||||
#define LCD_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1)
|
#define LCD_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1)
|
||||||
#define LCD_RCC_APB1Periph RCC_APB1Periph_SPI3
|
#define LCD_RCC_APB1Periph RCC_APB1Periph_SPI3
|
||||||
|
@ -1849,6 +1907,12 @@
|
||||||
#define AUDIO_SPEAKER_ENABLE_GPIO_PIN GPIO_Pin_14 // PD.14
|
#define AUDIO_SPEAKER_ENABLE_GPIO_PIN GPIO_Pin_14 // PD.14
|
||||||
#define HEADPHONE_TRAINER_SWITCH_GPIO GPIOD
|
#define HEADPHONE_TRAINER_SWITCH_GPIO GPIOD
|
||||||
#define HEADPHONE_TRAINER_SWITCH_GPIO_PIN GPIO_Pin_9 // PD.09
|
#define HEADPHONE_TRAINER_SWITCH_GPIO_PIN GPIO_Pin_9 // PD.09
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
|
||||||
|
#define AUDIO_MUTE_GPIO GPIOE
|
||||||
|
#define AUDIO_MUTE_GPIO_PIN GPIO_Pin_12 // PE.12
|
||||||
|
#define AUDIO_UNMUTE_DELAY 150 // ms
|
||||||
|
#define AUDIO_MUTE_DELAY 500 // ms
|
||||||
#else
|
#else
|
||||||
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
|
#define AUDIO_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA1)
|
||||||
#endif
|
#endif
|
||||||
|
@ -1937,7 +2001,7 @@
|
||||||
#define BT_TX_GPIO_PinSource GPIO_PinSource14
|
#define BT_TX_GPIO_PinSource GPIO_PinSource14
|
||||||
#define BT_RX_GPIO_PinSource GPIO_PinSource9
|
#define BT_RX_GPIO_PinSource GPIO_PinSource9
|
||||||
#define BT_USART_IRQHandler USART6_IRQHandler
|
#define BT_USART_IRQHandler USART6_IRQHandler
|
||||||
#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITES) || defined(RADIO_X9DP2019)
|
#elif defined(RADIO_X7) || defined(RADIO_X7ACCESS) || defined(PCBXLITE) || defined(PCBX9LITES) || defined(RADIO_X9DP2019)
|
||||||
#define STORAGE_BLUETOOTH
|
#define STORAGE_BLUETOOTH
|
||||||
#define BT_RCC_APB1Periph RCC_APB1Periph_USART3
|
#define BT_RCC_APB1Periph RCC_APB1Periph_USART3
|
||||||
#define BT_RCC_APB2Periph 0
|
#define BT_RCC_APB2Periph 0
|
||||||
|
@ -1969,7 +2033,7 @@
|
||||||
#define BT_USART_IRQn USART3_IRQn
|
#define BT_USART_IRQn USART3_IRQn
|
||||||
// #define BT_DMA_Stream_RX DMA1_Stream1
|
// #define BT_DMA_Stream_RX DMA1_Stream1
|
||||||
// #define BT_DMA_Channel_RX DMA_Channel_4
|
// #define BT_DMA_Channel_RX DMA_Channel_4
|
||||||
#elif defined(PCBX9D) || defined(PCBX9DP)
|
#elif defined(PCBX9D) || defined(PCBX9DP) || defined(RADIO_T12) || defined(RADIO_TX12)
|
||||||
#define STORAGE_BLUETOOTH
|
#define STORAGE_BLUETOOTH
|
||||||
#define BT_RCC_AHB1Periph 0
|
#define BT_RCC_AHB1Periph 0
|
||||||
#define BT_RCC_APB1Periph 0
|
#define BT_RCC_APB1Periph 0
|
||||||
|
|
|
@ -37,6 +37,31 @@ uint32_t readKeys()
|
||||||
result |= 1 << KEY_PAGE;
|
result |= 1 << KEY_PAGE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(KEYS_GPIO_PIN_PAGEUP)
|
||||||
|
if (~KEYS_GPIO_REG_PAGEUP & KEYS_GPIO_PIN_PAGEUP)
|
||||||
|
result |= 1 << KEY_PAGEUP;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(KEYS_GPIO_PIN_PAGEDN)
|
||||||
|
if (~KEYS_GPIO_REG_PAGEDN & KEYS_GPIO_PIN_PAGEDN)
|
||||||
|
result |= 1 << KEY_PAGEDN;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(KEYS_GPIO_PIN_SYS)
|
||||||
|
if (~KEYS_GPIO_REG_SYS & KEYS_GPIO_PIN_SYS)
|
||||||
|
result |= 1 << KEY_SYS;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(KEYS_GPIO_PIN_MDL)
|
||||||
|
if (~KEYS_GPIO_REG_MDL & KEYS_GPIO_PIN_MDL)
|
||||||
|
result |= 1 << KEY_MODEL;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(KEYS_GPIO_PIN_TELE)
|
||||||
|
if (~KEYS_GPIO_REG_TELE & KEYS_GPIO_PIN_TELE)
|
||||||
|
result |= 1 << KEY_TELE;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (~KEYS_GPIO_REG_EXIT & KEYS_GPIO_PIN_EXIT)
|
if (~KEYS_GPIO_REG_EXIT & KEYS_GPIO_PIN_EXIT)
|
||||||
result |= 1 << KEY_EXIT;
|
result |= 1 << KEY_EXIT;
|
||||||
|
|
||||||
|
@ -115,7 +140,7 @@ void readKeysAndTrims()
|
||||||
{
|
{
|
||||||
uint8_t index = 0;
|
uint8_t index = 0;
|
||||||
uint32_t keys_input = readKeys();
|
uint32_t keys_input = readKeys();
|
||||||
for (uint8_t i = 1; i != uint8_t(1 << TRM_BASE); i <<= 1) {
|
for (unsigned i = 1; i != unsigned(1 << TRM_BASE); i <<= 1) {
|
||||||
keys[index++].input(keys_input & i);
|
keys[index++].input(keys_input & i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,10 +200,15 @@ uint32_t switchState(uint8_t index)
|
||||||
uint32_t xxx = 0;
|
uint32_t xxx = 0;
|
||||||
|
|
||||||
switch (index) {
|
switch (index) {
|
||||||
|
#if defined(RADIO_TX12)
|
||||||
|
ADD_2POS_CASE(A);
|
||||||
|
ADD_3POS_CASE(B, 1);
|
||||||
|
ADD_3POS_CASE(C, 2);
|
||||||
|
#else
|
||||||
ADD_3POS_CASE(A, 0);
|
ADD_3POS_CASE(A, 0);
|
||||||
ADD_3POS_CASE(B, 1);
|
ADD_3POS_CASE(B, 1);
|
||||||
ADD_3POS_CASE(C, 2);
|
ADD_3POS_CASE(C, 2);
|
||||||
|
#endif
|
||||||
#if defined(PCBX9LITES)
|
#if defined(PCBX9LITES)
|
||||||
ADD_2POS_CASE(D);
|
ADD_2POS_CASE(D);
|
||||||
ADD_2POS_CASE(E);
|
ADD_2POS_CASE(E);
|
||||||
|
@ -201,6 +231,10 @@ uint32_t switchState(uint8_t index)
|
||||||
ADD_2POS_CASE(H);
|
ADD_2POS_CASE(H);
|
||||||
ADD_2POS_CASE(I);
|
ADD_2POS_CASE(I);
|
||||||
// no SWJ on XLITE
|
// no SWJ on XLITE
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
ADD_2POS_CASE(D);
|
||||||
|
ADD_3POS_CASE(E, 4);
|
||||||
|
ADD_3POS_CASE(F, 5);
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
ADD_3POS_CASE(D, 3);
|
ADD_3POS_CASE(D, 3);
|
||||||
ADD_2POS_CASE(F);
|
ADD_2POS_CASE(F);
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
#include "opentx.h"
|
#include "opentx.h"
|
||||||
|
|
||||||
#if defined(RADIO_T12)
|
#if defined(RADIO_T12) || defined(RADIO_TX12)
|
||||||
#define LCD_CONTRAST_OFFSET -10
|
#define LCD_CONTRAST_OFFSET -10
|
||||||
#else
|
#else
|
||||||
#define LCD_CONTRAST_OFFSET 160
|
#define LCD_CONTRAST_OFFSET 160
|
||||||
|
@ -107,8 +107,8 @@ void lcdHardwareInit()
|
||||||
#if LCD_W == 128
|
#if LCD_W == 128
|
||||||
void lcdStart()
|
void lcdStart()
|
||||||
{
|
{
|
||||||
#if defined(RADIO_T12)
|
#if defined(LCD_VERTICAL_INVERT)
|
||||||
// Jumper has the screen inverted.
|
// T12 and TX12 have the screen inverted.
|
||||||
lcdWriteCommand(0xe2); // (14) Soft reset
|
lcdWriteCommand(0xe2); // (14) Soft reset
|
||||||
lcdWriteCommand(0xa0); // Set seg
|
lcdWriteCommand(0xa0); // Set seg
|
||||||
lcdWriteCommand(0xc8); // Set com
|
lcdWriteCommand(0xc8); // Set com
|
||||||
|
@ -201,7 +201,7 @@ void lcdRefresh(bool wait)
|
||||||
for (uint8_t y=0; y < 8; y++, p+=LCD_W) {
|
for (uint8_t y=0; y < 8; y++, p+=LCD_W) {
|
||||||
lcdWriteCommand(0x10); // Column addr 0
|
lcdWriteCommand(0x10); // Column addr 0
|
||||||
lcdWriteCommand(0xB0 | y); // Page addr y
|
lcdWriteCommand(0xB0 | y); // Page addr y
|
||||||
#if !defined(RADIO_T12)
|
#if !defined(LCD_VERTICAL_INVERT)
|
||||||
lcdWriteCommand(0x04);
|
lcdWriteCommand(0x04);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -122,8 +122,8 @@ void telemetryPortInvertedInit(uint32_t baudrate)
|
||||||
probeTimeFromStartBit = 25;
|
probeTimeFromStartBit = 25;
|
||||||
break;
|
break;
|
||||||
case 57600:
|
case 57600:
|
||||||
bitLength = 35; //34 was used before - I prefer to use use 35 because of lower error
|
bitLength = 35;
|
||||||
probeTimeFromStartBit = 52; //round down - 48 used in original implementation
|
probeTimeFromStartBit = 48;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
bitLength = 2000000/baudrate; //because of 0,5 us tick
|
bitLength = 2000000/baudrate; //because of 0,5 us tick
|
||||||
|
|
|
@ -178,10 +178,9 @@ void processCrossfireTelemetryFrame()
|
||||||
case FLIGHT_MODE_ID:
|
case FLIGHT_MODE_ID:
|
||||||
{
|
{
|
||||||
const CrossfireSensor & sensor = crossfireSensors[FLIGHT_MODE_INDEX];
|
const CrossfireSensor & sensor = crossfireSensors[FLIGHT_MODE_INDEX];
|
||||||
for (int i=0; i<min<int>(16, telemetryRxBuffer[1]-2); i+=4) {
|
auto textLength = min<int>(16, telemetryRxBuffer[1]);
|
||||||
uint32_t value = *((uint32_t *)&telemetryRxBuffer[3+i]);
|
telemetryRxBuffer[textLength] = '\0';
|
||||||
setTelemetryValue(PROTOCOL_TELEMETRY_CROSSFIRE, sensor.id, 0, sensor.subId, value, sensor.unit, i);
|
setTelemetryText(PROTOCOL_TELEMETRY_CROSSFIRE, sensor.id, 0, sensor.subId, (const char *)telemetryRxBuffer + 3);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -204,6 +204,7 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (unit == UNIT_TEXT) {
|
else if (unit == UNIT_TEXT) {
|
||||||
|
// Should be handled at telemetry protocol level
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
constexpr int8_t TELEMETRY_SENSOR_TIMEOUT_UNAVAILABLE = -2;
|
constexpr int8_t TELEMETRY_SENSOR_TIMEOUT_UNAVAILABLE = -2;
|
||||||
constexpr int8_t TELEMETRY_SENSOR_TIMEOUT_OLD = -1;
|
constexpr int8_t TELEMETRY_SENSOR_TIMEOUT_OLD = -1;
|
||||||
constexpr int8_t TELEMETRY_SENSOR_TIMEOUT_START = 125; // * 160ms = 20s
|
constexpr int8_t TELEMETRY_SENSOR_TIMEOUT_START = 125; // * 160ms = 20s
|
||||||
|
constexpr uint8_t TELEMETRY_SENSOR_TEXT_LENGTH = 16;
|
||||||
|
|
||||||
class TelemetryItem
|
class TelemetryItem
|
||||||
{
|
{
|
||||||
|
@ -74,7 +75,7 @@ class TelemetryItem
|
||||||
// pilot latitude is stored in max
|
// pilot latitude is stored in max
|
||||||
// distFromEarthAxis is stored in value
|
// distFromEarthAxis is stored in value
|
||||||
} gps;
|
} gps;
|
||||||
char text[16];
|
char text[TELEMETRY_SENSOR_TEXT_LENGTH];
|
||||||
};
|
};
|
||||||
|
|
||||||
TelemetryItem()
|
TelemetryItem()
|
||||||
|
|
|
@ -48,6 +48,11 @@ void checkTrainerSignalWarning()
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(PCBSKY9X)
|
#if defined(PCBSKY9X)
|
||||||
|
void stopTrainer()
|
||||||
|
{
|
||||||
|
stop_trainer_capture();
|
||||||
|
}
|
||||||
|
|
||||||
void checkTrainerSettings()
|
void checkTrainerSettings()
|
||||||
{
|
{
|
||||||
uint8_t requiredTrainerMode = SLAVE_MODE();
|
uint8_t requiredTrainerMode = SLAVE_MODE();
|
||||||
|
@ -55,17 +60,14 @@ void checkTrainerSettings()
|
||||||
if (requiredTrainerMode != currentTrainerMode) {
|
if (requiredTrainerMode != currentTrainerMode) {
|
||||||
currentTrainerMode = requiredTrainerMode;
|
currentTrainerMode = requiredTrainerMode;
|
||||||
if (requiredTrainerMode)
|
if (requiredTrainerMode)
|
||||||
stop_trainer_capture();
|
stopTrainer();
|
||||||
else
|
else
|
||||||
init_trainer_capture();
|
init_trainer_capture();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void checkTrainerSettings()
|
void stopTrainer()
|
||||||
{
|
{
|
||||||
uint8_t requiredTrainerMode = g_model.trainerData.mode;
|
|
||||||
|
|
||||||
if (requiredTrainerMode != currentTrainerMode) {
|
|
||||||
switch (currentTrainerMode) {
|
switch (currentTrainerMode) {
|
||||||
case TRAINER_MODE_MASTER_TRAINER_JACK:
|
case TRAINER_MODE_MASTER_TRAINER_JACK:
|
||||||
stop_trainer_capture();
|
stop_trainer_capture();
|
||||||
|
@ -87,7 +89,7 @@ void checkTrainerSettings()
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HARDWARE_TRAINER_AUX_SERIAL)
|
#if defined(TRAINER_BATTERY_COMPARTMENT)
|
||||||
case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT:
|
case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT:
|
||||||
#if defined(AUX_SERIAL)
|
#if defined(AUX_SERIAL)
|
||||||
if (g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER)
|
if (g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER)
|
||||||
|
@ -101,6 +103,18 @@ void checkTrainerSettings()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
currentTrainerMode = 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
void checkTrainerSettings()
|
||||||
|
{
|
||||||
|
uint8_t requiredTrainerMode = g_model.trainerData.mode;
|
||||||
|
|
||||||
|
if (requiredTrainerMode != currentTrainerMode) {
|
||||||
|
if (currentTrainerMode != 0xFF) {
|
||||||
|
stopTrainer();
|
||||||
|
}
|
||||||
|
|
||||||
currentTrainerMode = requiredTrainerMode;
|
currentTrainerMode = requiredTrainerMode;
|
||||||
|
|
||||||
switch (requiredTrainerMode) {
|
switch (requiredTrainerMode) {
|
||||||
|
@ -120,7 +134,7 @@ void checkTrainerSettings()
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HARDWARE_TRAINER_AUX_SERIAL)
|
#if defined(TRAINER_BATTERY_COMPARTMENT)
|
||||||
case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT:
|
case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT:
|
||||||
#if defined(AUX_SERIAL)
|
#if defined(AUX_SERIAL)
|
||||||
if (g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER)
|
if (g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER)
|
||||||
|
|
|
@ -35,6 +35,7 @@ extern uint8_t currentTrainerMode;
|
||||||
|
|
||||||
void checkTrainerSignalWarning();
|
void checkTrainerSignalWarning();
|
||||||
void checkTrainerSettings();
|
void checkTrainerSettings();
|
||||||
|
void stopTrainer();
|
||||||
void forceResetTrainerSettings();
|
void forceResetTrainerSettings();
|
||||||
|
|
||||||
// Needs to be inlined to avoid slow function calls in ISR routines
|
// Needs to be inlined to avoid slow function calls in ISR routines
|
||||||
|
|
|
@ -291,6 +291,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Exit\0""Enter""Dolů\0""Nhoru""Vprvo""Vlevo"
|
#define TR_VKEYS "Exit\0""Enter""Dolů\0""Nhoru""Vprvo""Vlevo"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Mínus"
|
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Mínus"
|
||||||
|
|
|
@ -300,6 +300,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||||
|
|
|
@ -300,6 +300,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||||
|
|
|
@ -297,6 +297,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||||
|
|
|
@ -318,6 +318,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||||
|
|
|
@ -320,6 +320,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Moins"
|
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Moins"
|
||||||
|
|
|
@ -324,6 +324,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||||
|
|
|
@ -298,6 +298,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||||
|
|
|
@ -318,6 +318,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||||
|
|
|
@ -305,8 +305,22 @@
|
||||||
#define LEN_VSWASHTYPE "\004"
|
#define LEN_VSWASHTYPE "\004"
|
||||||
#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0"
|
#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0"
|
||||||
|
|
||||||
#define LEN_VKEYS "\005"
|
#if defined(PCBHORUS)
|
||||||
#define TR_VKEYS TR("Menu\0""Sair\0""Desce""Sobe\0""Direi""Esqda", "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus")
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "PGUP\0""PGDN\0""ENTER""MDL\0 ""RTN\0 ""TELE\0""SYS\0 "
|
||||||
|
#elif defined(RADIO_T12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
|
#elif defined(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""Ned\0 ""Upp\0 ""Höger""Vänst"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LEN_VSWITCHES "\003"
|
#define LEN_VSWITCHES "\003"
|
||||||
#define LEN_VSRCRAW "\004"
|
#define LEN_VSRCRAW "\004"
|
||||||
|
|
|
@ -315,6 +315,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
#define TR_VKEYS "Exit\0""Enter""Down\0""Up\0 ""Right""Left\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define LEN_VKEYS "\005"
|
||||||
|
#define TR_VKEYS "Exit\0""Enter""Up\0 ""Down\0""SYS\0 ""MDL\0 ""TELE\0"
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
#define LEN_VKEYS "\005"
|
#define LEN_VKEYS "\005"
|
||||||
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
#define TR_VKEYS "Menu\0""Exit\0""Enter""Page\0""Plus\0""Minus"
|
||||||
|
|
|
@ -44,6 +44,9 @@
|
||||||
#elif defined(RADIO_T12)
|
#elif defined(RADIO_T12)
|
||||||
#define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"S2\0"
|
#define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"S2\0"
|
||||||
#define TR_SW_VSRCRAW STR_CHAR_SWITCH"SA\0" STR_CHAR_SWITCH"SB\0" STR_CHAR_SWITCH"SC\0" STR_CHAR_SWITCH"SD\0" STR_CHAR_SWITCH"SG\0" STR_CHAR_SWITCH"SH\0" STR_CHAR_SWITCH"SI\0" STR_CHAR_SWITCH"SJ\0"
|
#define TR_SW_VSRCRAW STR_CHAR_SWITCH"SA\0" STR_CHAR_SWITCH"SB\0" STR_CHAR_SWITCH"SC\0" STR_CHAR_SWITCH"SD\0" STR_CHAR_SWITCH"SG\0" STR_CHAR_SWITCH"SH\0" STR_CHAR_SWITCH"SI\0" STR_CHAR_SWITCH"SJ\0"
|
||||||
|
#elif defined(RADIO_TX12)
|
||||||
|
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0"
|
||||||
|
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SI\0""\312SJ\0"
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
#define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"S2\0"
|
#define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"S2\0"
|
||||||
#define TR_SW_VSRCRAW STR_CHAR_SWITCH"SA\0" STR_CHAR_SWITCH"SB\0" STR_CHAR_SWITCH"SC\0" STR_CHAR_SWITCH"SD\0" STR_CHAR_SWITCH"SF\0" STR_CHAR_SWITCH"SH\0" STR_CHAR_SWITCH"SI\0" STR_CHAR_SWITCH"SJ\0"
|
#define TR_SW_VSRCRAW STR_CHAR_SWITCH"SA\0" STR_CHAR_SWITCH"SB\0" STR_CHAR_SWITCH"SC\0" STR_CHAR_SWITCH"SD\0" STR_CHAR_SWITCH"SF\0" STR_CHAR_SWITCH"SH\0" STR_CHAR_SWITCH"SI\0" STR_CHAR_SWITCH"SJ\0"
|
||||||
|
|
|
@ -146,6 +146,11 @@ def main():
|
||||||
cmake_options["PCBREV"] = "T12"
|
cmake_options["PCBREV"] = "T12"
|
||||||
firmware_options = options_jumper_t12
|
firmware_options = options_jumper_t12
|
||||||
maxsize = 65536 * 8
|
maxsize = 65536 * 8
|
||||||
|
elif board_name == "tx12":
|
||||||
|
cmake_options["PCB"] = "X7"
|
||||||
|
cmake_options["PCBREV"] = "TX12"
|
||||||
|
firmware_options = options_radiomaster_tx12
|
||||||
|
maxsize = 65536 * 8
|
||||||
elif board_name == "t16":
|
elif board_name == "t16":
|
||||||
cmake_options["PCB"] = "X10"
|
cmake_options["PCB"] = "X10"
|
||||||
cmake_options["PCBREV"] = "T16"
|
cmake_options["PCBREV"] = "T16"
|
||||||
|
|
|
@ -246,6 +246,18 @@ options_jumper_t18 = {
|
||||||
"bluetooth": ("BLUETOOTH", "YES", "NO"),
|
"bluetooth": ("BLUETOOTH", "YES", "NO"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
options_radiomaster_tx12 = {
|
||||||
|
"noheli": ("HELI", "NO", "YES"),
|
||||||
|
"ppmus": ("PPM_UNIT", "US", "PERCENT_PREC1"),
|
||||||
|
"lua": ("LUA", "YES", "NO_MODEL_SCRIPTS"),
|
||||||
|
"nogvars": ("GVARS", "NO", "YES"),
|
||||||
|
"faimode": ("FAI", "YES", None),
|
||||||
|
"faichoice": ("FAI", "CHOICE", None),
|
||||||
|
"nooverridech": ("OVERRIDE_CHANNEL_FUNCTION", "NO", "YES"),
|
||||||
|
"flexr9m": ("MODULE_PROTOCOL_FLEX", "YES", None),
|
||||||
|
"afhds3": ("AFHDS3", "YES", "NO")
|
||||||
|
}
|
||||||
|
|
||||||
options_radiomaster_tx16s = {
|
options_radiomaster_tx16s = {
|
||||||
"noheli": ("HELI", "NO", "YES"),
|
"noheli": ("HELI", "NO", "YES"),
|
||||||
"ppmus": ("PPM_UNIT", "US", "PERCENT_PREC1"),
|
"ppmus": ("PPM_UNIT", "US", "PERCENT_PREC1"),
|
||||||
|
|
|
@ -70,6 +70,10 @@ cmake ${COMMON_OPTIONS} -DPCB=X7 -DPCBREV=T12 ${SRCDIR}
|
||||||
make -j${JOBS} libsimulator
|
make -j${JOBS} libsimulator
|
||||||
rm CMakeCache.txt
|
rm CMakeCache.txt
|
||||||
|
|
||||||
|
cmake ${COMMON_OPTIONS} -DPCB=X7 -DPCBREV=TX12 ${SRCDIR}
|
||||||
|
make -j${JOBS} libsimulator
|
||||||
|
rm CMakeCache.txt
|
||||||
|
|
||||||
cmake ${COMMON_OPTIONS} -DPCB=X9D ${SRCDIR}
|
cmake ${COMMON_OPTIONS} -DPCB=X9D ${SRCDIR}
|
||||||
make -j${JOBS} libsimulator
|
make -j${JOBS} libsimulator
|
||||||
rm CMakeCache.txt
|
rm CMakeCache.txt
|
||||||
|
|
|
@ -70,6 +70,10 @@ cmake ${COMMON_OPTIONS} -DPCB=X7 -DPCBREV=T12 ${SRCDIR}
|
||||||
make -j${JOBS} libsimulator
|
make -j${JOBS} libsimulator
|
||||||
rm CMakeCache.txt
|
rm CMakeCache.txt
|
||||||
|
|
||||||
|
cmake ${COMMON_OPTIONS} -DPCB=X7 -DPCBREV=TX12 ${SRCDIR}
|
||||||
|
make -j${JOBS} libsimulator
|
||||||
|
rm CMakeCache.txt
|
||||||
|
|
||||||
cmake ${COMMON_OPTIONS} -DPCB=X9D ${SRCDIR}
|
cmake ${COMMON_OPTIONS} -DPCB=X9D ${SRCDIR}
|
||||||
make -j${JOBS} libsimulator
|
make -j${JOBS} libsimulator
|
||||||
rm CMakeCache.txt
|
rm CMakeCache.txt
|
||||||
|
|
|
@ -18,6 +18,16 @@ boards = {
|
||||||
"PCB": "X10",
|
"PCB": "X10",
|
||||||
"PCBREV": "TX16S",
|
"PCBREV": "TX16S",
|
||||||
"DEFAULT_MODE": "2",
|
"DEFAULT_MODE": "2",
|
||||||
|
},
|
||||||
|
"TX12_1": {
|
||||||
|
"PCB": "X7",
|
||||||
|
"PCBREV": "TX12",
|
||||||
|
"DEFAULT_MODE": "1",
|
||||||
|
},
|
||||||
|
"TX12_2": {
|
||||||
|
"PCB": "X7",
|
||||||
|
"PCBREV": "TX12",
|
||||||
|
"DEFAULT_MODE": "2",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,6 +112,15 @@ if [[ " X7 ALL " =~ \ ${FLAVOR}\ ]] ; then
|
||||||
make -j"${CORES}" tests-radio
|
make -j"${CORES}" tests-radio
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ " X7ACCESS X7 ALL " =~ \ ${FLAVOR}\ ]] ; then
|
||||||
|
# OpenTX on X7 ACCESS
|
||||||
|
rm -rf ./*
|
||||||
|
cmake "${COMMON_OPTIONS}" -DPCB=X7 -DPCBREV=ACCESS -DHELI=YES -DGVARS=YES "${SRCDIR}"
|
||||||
|
make -j"${CORES}" ${FIRMARE_TARGET}
|
||||||
|
make -j"${CORES}" libsimulator
|
||||||
|
make -j"${CORES}" tests-radio
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ " T12 X7 ALL " =~ \ ${FLAVOR}\ ]] ; then
|
if [[ " T12 X7 ALL " =~ \ ${FLAVOR}\ ]] ; then
|
||||||
# OpenTX on T12
|
# OpenTX on T12
|
||||||
rm -rf ./* || true
|
rm -rf ./* || true
|
||||||
|
@ -121,6 +130,15 @@ if [[ " T12 X7 ALL " =~ \ ${FLAVOR}\ ]] ; then
|
||||||
make -j"${CORES}" tests-radio
|
make -j"${CORES}" tests-radio
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ " TX12 X7 ALL " =~ \ ${FLAVOR}\ ]] ; then
|
||||||
|
# OpenTX on TX12
|
||||||
|
rm -rf ./*
|
||||||
|
cmake "${COMMON_OPTIONS}" -DPCB=X7 -DPCBREV=TX12 -DHELI=YES -DGVARS=YES "${SRCDIR}"
|
||||||
|
make -j"${CORES}" ${FIRMARE_TARGET}
|
||||||
|
make -j"${CORES}" libsimulator
|
||||||
|
make -j"${CORES}" tests-radio
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ " XLITE ALL " =~ \ ${FLAVOR}\ ]] ; then
|
if [[ " XLITE ALL " =~ \ ${FLAVOR}\ ]] ; then
|
||||||
# OpenTX on X-Lite
|
# OpenTX on X-Lite
|
||||||
rm -rf ./* || true
|
rm -rf ./* || true
|
||||||
|
|