mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 16:25:16 +03:00
ACCESS support started in Companion
This commit is contained in:
parent
7bffb89089
commit
48fbdbb7a9
6 changed files with 26 additions and 11 deletions
|
@ -195,7 +195,7 @@ class Boards
|
|||
#define IS_TARANIS_XLITE(board) (board==Board::BOARD_TARANIS_XLITE || board==Board::BOARD_TARANIS_XLITES)
|
||||
#define IS_TARANIS_XLITES(board) (board==Board::BOARD_TARANIS_XLITES)
|
||||
#define IS_TARANIS_X7(board) (board==Board::BOARD_TARANIS_X7)
|
||||
#define IS_TARANIS_X9LITE(board) (board==Board::BOARD_TARANIS_X9LITE)
|
||||
#define IS_TARANIS_X9LITE(board) (board==Board::BOARD_TARANIS_X9LITE)
|
||||
#define IS_TARANIS_X9(board) (board==Board::BOARD_TARANIS_X9D || board==Board::BOARD_TARANIS_X9DP || board==Board::BOARD_TARANIS_X9E)
|
||||
#define IS_TARANIS_X9D(board) (board==Board::BOARD_TARANIS_X9D || board==Board::BOARD_TARANIS_X9DP)
|
||||
#define IS_TARANIS_PLUS(board) (board==Board::BOARD_TARANIS_X9DP || board==Board::BOARD_TARANIS_X9E)
|
||||
|
@ -208,6 +208,7 @@ class Boards
|
|||
#define IS_HORUS_OR_TARANIS(board) (IS_HORUS(board) || IS_TARANIS(board))
|
||||
#define IS_STM32(board) (IS_TARANIS(board) || IS_HORUS(board))
|
||||
#define IS_ARM(board) (IS_STM32(board) || IS_SKY9X(board))
|
||||
#define IS_ACCESS_RADIO(board) (IS_TARANIS_X9LITE(board) || IS_TARANIS_XLITES(board))
|
||||
#define HAS_LARGE_LCD(board) (IS_HORUS(board) || IS_TARANIS_X9(board))
|
||||
|
||||
#endif // _BOARDS_H_
|
||||
|
|
|
@ -164,7 +164,11 @@ void ModelData::clear()
|
|||
moduleData[1].ppm.delay = 300;
|
||||
moduleData[2].ppm.delay = 300;
|
||||
int board = getCurrentBoard();
|
||||
if (IS_HORUS_OR_TARANIS(board)) {
|
||||
if (IS_ACCESS_RADIO(board)) {
|
||||
moduleData[0].protocol = PULSES_ACCESS_ISRM;
|
||||
moduleData[1].protocol = PULSES_OFF;
|
||||
}
|
||||
else if (IS_HORUS_OR_TARANIS(board)) {
|
||||
moduleData[0].protocol = PULSES_PXX_XJT_X16;
|
||||
moduleData[1].protocol = PULSES_OFF;
|
||||
}
|
||||
|
|
|
@ -104,6 +104,7 @@ QString ModuleData::protocolToString(unsigned protocol)
|
|||
"TBS Crossfire",
|
||||
"DIY Multiprotocol Module",
|
||||
"FrSky PXX R9M",
|
||||
"FrSky PXX R9M Lite",
|
||||
"SBUS output at VBat",
|
||||
"FrSky ACCESS ISRM",
|
||||
"FrSky ACCESS R9M",
|
||||
|
|
|
@ -137,7 +137,6 @@ class ModuleData {
|
|||
unsigned int failsafeMode;
|
||||
int failsafeChannels[CPN_MAX_CHNOUT];
|
||||
|
||||
|
||||
struct {
|
||||
int delay;
|
||||
bool pulsePol; // false = positive
|
||||
|
@ -161,6 +160,11 @@ class ModuleData {
|
|||
bool sport_out;
|
||||
} pxx;
|
||||
|
||||
struct {
|
||||
// unsigned int receivers;
|
||||
// char receiverName[3][8];
|
||||
char data[1 + 3 * 8];
|
||||
} access;
|
||||
|
||||
void clear() { memset(this, 0, sizeof(ModuleData)); }
|
||||
void convert(RadioDataConversionState & cstate);
|
||||
|
|
|
@ -2207,7 +2207,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, Board::Type board, unsig
|
|||
internalField.Append(new SignedField<8>(this, modelData.moduleData[module].ppm.frameLength));
|
||||
if (version >= 219) {
|
||||
// TODO ACCESS
|
||||
internalField.Append(new SpareBitsField<(1 + 3 * 8 - 2) * 8>(this));
|
||||
internalField.Append(new CharField<1 + 3 * 8 - 2>(this, modelData.moduleData[module].access.data));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2310,10 +2310,10 @@ void OpenTxModelData::beforeExport()
|
|||
{
|
||||
// qDebug() << QString("before export model") << modelData.name;
|
||||
|
||||
for (int module=0; module<3; module++) {
|
||||
for (int module=0; module<2; module++) {
|
||||
if ((modelData.moduleData[module].protocol >= PULSES_PXX_XJT_X16 && modelData.moduleData[module].protocol <= PULSES_PXX_XJT_LR12) ||
|
||||
modelData.moduleData[module].protocol == PULSES_PXX_R9M) {
|
||||
if (! (modelData.moduleData[module].protocol == PULSES_PXX_R9M)) {
|
||||
if (modelData.moduleData[module].protocol != PULSES_PXX_R9M) {
|
||||
subprotocols[module] = modelData.moduleData[module].protocol - PULSES_PXX_XJT_X16;
|
||||
}
|
||||
int pxxByte = (modelData.moduleData[module].pxx.power & 0x03)
|
||||
|
@ -2362,7 +2362,7 @@ void OpenTxModelData::afterImport()
|
|||
modelData.moduleData[0].protocol = PULSES_PXX_XJT_X16;
|
||||
}
|
||||
|
||||
for (int module=0; module<3; module++) {
|
||||
for (int module=0; module<2; module++) {
|
||||
if (modelData.moduleData[module].protocol == PULSES_PXX_XJT_X16 || modelData.moduleData[module].protocol == PULSES_LP45) {
|
||||
if (subprotocols[module] >= 0)
|
||||
modelData.moduleData[module].protocol += subprotocols[module];
|
||||
|
|
|
@ -255,8 +255,10 @@ ModulePanel::~ModulePanel()
|
|||
|
||||
bool ModulePanel::moduleHasFailsafes()
|
||||
{
|
||||
return (((PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_XJT_X16 || (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_R9M)
|
||||
&& firmware->getCapability(HasFailsafe));
|
||||
return firmware->getCapability(HasFailsafe) && (
|
||||
(PulsesProtocol)module.protocol == PulsesProtocol::PULSES_ACCESS_ISRM ||
|
||||
(PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_XJT_X16 ||
|
||||
(PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_R9M);
|
||||
}
|
||||
|
||||
void ModulePanel::setupFailsafes()
|
||||
|
@ -362,6 +364,9 @@ void ModulePanel::update()
|
|||
if (moduleIdx >= 0) {
|
||||
mask |= MASK_PROTOCOL;
|
||||
switch (protocol) {
|
||||
case PULSES_ACCESS_ISRM:
|
||||
mask |= MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT | MASK_RX_NUMBER;
|
||||
break;
|
||||
case PULSES_PXX_R9M:
|
||||
mask |= MASK_R9M | MASK_SUBTYPES;
|
||||
case PULSES_PXX_XJT_X16:
|
||||
|
@ -371,7 +376,7 @@ void ModulePanel::update()
|
|||
mask |= MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT;
|
||||
if (protocol==PULSES_PXX_XJT_X16 || protocol==PULSES_PXX_XJT_LR12 || protocol==PULSES_PXX_R9M)
|
||||
mask |= MASK_RX_NUMBER;
|
||||
if ((IS_HORUS(board) || IS_TARANIS_XLITE(board)) && moduleIdx==0)
|
||||
if ((IS_HORUS(board) || board == Board::BOARD_TARANIS_XLITE) && moduleIdx == 0)
|
||||
mask |= MASK_ANTENNA;
|
||||
break;
|
||||
case PULSES_LP45:
|
||||
|
@ -555,7 +560,7 @@ void ModulePanel::update()
|
|||
|
||||
if (mask & MASK_CHANNELS_RANGE) {
|
||||
ui->channelsStart->setMaximum(33 - ui->channelsCount->value());
|
||||
ui->channelsCount->setMaximum(qMin(16, 33-ui->channelsStart->value()));
|
||||
ui->channelsCount->setMaximum(qMin(24, 33-ui->channelsStart->value()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue