1
0
Fork 0
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:
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_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_

View file

@ -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;
}

View file

@ -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",

View file

@ -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);

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));
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];

View file

@ -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()));
}
}