1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-25 01:05:10 +03:00

ACCESS support started in Companion

This commit is contained in:
Bertrand Songis 2019-06-04 18:14:09 +02:00
parent 7bffb89089
commit 48fbdbb7a9
No known key found for this signature in database
GPG key ID: F189F79290FEC50F
6 changed files with 26 additions and 11 deletions

View file

@ -195,7 +195,7 @@ class Boards
#define IS_TARANIS_XLITE(board) (board==Board::BOARD_TARANIS_XLITE || board==Board::BOARD_TARANIS_XLITES) #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_XLITES(board) (board==Board::BOARD_TARANIS_XLITES)
#define IS_TARANIS_X7(board) (board==Board::BOARD_TARANIS_X7) #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_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_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) #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_HORUS_OR_TARANIS(board) (IS_HORUS(board) || IS_TARANIS(board))
#define IS_STM32(board) (IS_TARANIS(board) || IS_HORUS(board)) #define IS_STM32(board) (IS_TARANIS(board) || IS_HORUS(board))
#define IS_ARM(board) (IS_STM32(board) || IS_SKY9X(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)) #define HAS_LARGE_LCD(board) (IS_HORUS(board) || IS_TARANIS_X9(board))
#endif // _BOARDS_H_ #endif // _BOARDS_H_

View file

@ -164,7 +164,11 @@ void ModelData::clear()
moduleData[1].ppm.delay = 300; moduleData[1].ppm.delay = 300;
moduleData[2].ppm.delay = 300; moduleData[2].ppm.delay = 300;
int board = getCurrentBoard(); 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[0].protocol = PULSES_PXX_XJT_X16;
moduleData[1].protocol = PULSES_OFF; moduleData[1].protocol = PULSES_OFF;
} }

View file

@ -104,6 +104,7 @@ QString ModuleData::protocolToString(unsigned protocol)
"TBS Crossfire", "TBS Crossfire",
"DIY Multiprotocol Module", "DIY Multiprotocol Module",
"FrSky PXX R9M", "FrSky PXX R9M",
"FrSky PXX R9M Lite",
"SBUS output at VBat", "SBUS output at VBat",
"FrSky ACCESS ISRM", "FrSky ACCESS ISRM",
"FrSky ACCESS R9M", "FrSky ACCESS R9M",

View file

@ -137,7 +137,6 @@ class ModuleData {
unsigned int failsafeMode; unsigned int failsafeMode;
int failsafeChannels[CPN_MAX_CHNOUT]; int failsafeChannels[CPN_MAX_CHNOUT];
struct { struct {
int delay; int delay;
bool pulsePol; // false = positive bool pulsePol; // false = positive
@ -161,6 +160,11 @@ class ModuleData {
bool sport_out; bool sport_out;
} pxx; } pxx;
struct {
// unsigned int receivers;
// char receiverName[3][8];
char data[1 + 3 * 8];
} access;
void clear() { memset(this, 0, sizeof(ModuleData)); } void clear() { memset(this, 0, sizeof(ModuleData)); }
void convert(RadioDataConversionState & cstate); void convert(RadioDataConversionState & cstate);

View file

@ -2207,7 +2207,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, Board::Type board, unsig
internalField.Append(new SignedField<8>(this, modelData.moduleData[module].ppm.frameLength)); internalField.Append(new SignedField<8>(this, modelData.moduleData[module].ppm.frameLength));
if (version >= 219) { if (version >= 219) {
// TODO ACCESS // 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; // 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) || if ((modelData.moduleData[module].protocol >= PULSES_PXX_XJT_X16 && modelData.moduleData[module].protocol <= PULSES_PXX_XJT_LR12) ||
modelData.moduleData[module].protocol == PULSES_PXX_R9M) { 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; subprotocols[module] = modelData.moduleData[module].protocol - PULSES_PXX_XJT_X16;
} }
int pxxByte = (modelData.moduleData[module].pxx.power & 0x03) int pxxByte = (modelData.moduleData[module].pxx.power & 0x03)
@ -2362,7 +2362,7 @@ void OpenTxModelData::afterImport()
modelData.moduleData[0].protocol = PULSES_PXX_XJT_X16; 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 (modelData.moduleData[module].protocol == PULSES_PXX_XJT_X16 || modelData.moduleData[module].protocol == PULSES_LP45) {
if (subprotocols[module] >= 0) if (subprotocols[module] >= 0)
modelData.moduleData[module].protocol += subprotocols[module]; modelData.moduleData[module].protocol += subprotocols[module];

View file

@ -255,8 +255,10 @@ ModulePanel::~ModulePanel()
bool ModulePanel::moduleHasFailsafes() bool ModulePanel::moduleHasFailsafes()
{ {
return (((PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_XJT_X16 || (PulsesProtocol)module.protocol == PulsesProtocol::PULSES_PXX_R9M) return firmware->getCapability(HasFailsafe) && (
&& 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() void ModulePanel::setupFailsafes()
@ -362,6 +364,9 @@ void ModulePanel::update()
if (moduleIdx >= 0) { if (moduleIdx >= 0) {
mask |= MASK_PROTOCOL; mask |= MASK_PROTOCOL;
switch (protocol) { switch (protocol) {
case PULSES_ACCESS_ISRM:
mask |= MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT | MASK_RX_NUMBER;
break;
case PULSES_PXX_R9M: case PULSES_PXX_R9M:
mask |= MASK_R9M | MASK_SUBTYPES; mask |= MASK_R9M | MASK_SUBTYPES;
case PULSES_PXX_XJT_X16: case PULSES_PXX_XJT_X16:
@ -371,7 +376,7 @@ void ModulePanel::update()
mask |= MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT; mask |= MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT;
if (protocol==PULSES_PXX_XJT_X16 || protocol==PULSES_PXX_XJT_LR12 || protocol==PULSES_PXX_R9M) if (protocol==PULSES_PXX_XJT_X16 || protocol==PULSES_PXX_XJT_LR12 || protocol==PULSES_PXX_R9M)
mask |= MASK_RX_NUMBER; 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; mask |= MASK_ANTENNA;
break; break;
case PULSES_LP45: case PULSES_LP45:
@ -555,7 +560,7 @@ void ModulePanel::update()
if (mask & MASK_CHANNELS_RANGE) { if (mask & MASK_CHANNELS_RANGE) {
ui->channelsStart->setMaximum(33 - ui->channelsCount->value()); 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()));
} }
} }