1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-24 00:35:18 +03:00

Schwabe/multi protocol update (#4352)

* Add multi frisky eu protocols

* Also implement MULTI_STATUS, the alternative to MULTI_TELEMETRY used by er9x/ersky9x
This commit is contained in:
Arne Schwabe 2017-01-31 07:41:08 +01:00 committed by Bertrand Songis
parent cab26a6a0f
commit 59d9ec131b
15 changed files with 31 additions and 24 deletions

View file

@ -1859,7 +1859,6 @@ unsigned int getNumSubtypes(MultiModuleRFProtocols type)
case MM_RF_PROTO_CG023:
return 3;
case MM_RF_PROTO_FRSKY:
case MM_RF_PROTO_DSM2:
case MM_RF_PROTO_MT99XX:
case MM_RF_PROTO_HONTAI:
@ -1872,6 +1871,7 @@ unsigned int getNumSubtypes(MultiModuleRFProtocols type)
case MM_RF_PROTO_YD717:
return 5;
case MM_RF_PROTO_FRSKY:
case MM_RF_PROTO_WK_2X01:
return 6;

View file

@ -143,7 +143,7 @@ QString ModelPrinter::printMultiSubType(int rfProtocol, bool custom, int subType
/* custom protocols */
static const char *custom_subtype_strings[] = {"Subtype 0", "Subtype 1", "Subtype 2", "Subtype 3", "Subtype 4", "Subtype 5", "Subtype 6", "Subtype 7"};
static const char *flysky_strings[] = {"Standard", "V9x9", "V6x6", "V912", "CX20"};
static const char *frsky_strings[] = {"D16", "D8", "D16 8ch", "V8"};
static const char *frsky_strings[] = {"D16", "D8", "D16 8ch", "V8", "D16 EU-LBT", "D16 EU-LBT 8ch"};
static const char *hisky_strings[] = {"HiSky", "HK310"};
static const char *v2x2_strings[] = {"V2x2", "JXD506"};
static const char *dsm2_strings[] = {"DSM2 22ms", "DSM2 11ms", "DSMX 22ms", "DSMX 11ms"};

View file

@ -582,7 +582,7 @@ int getFirstAvailable(int min, int max, IsValueAvailable isValueAvailable)
const mm_protocol_definition multi_protocols[] = {
{ MM_RF_PROTO_FLYSKY, STR_SUBTYPE_FLYSKY, 4, nullptr },
{ MM_RF_PROTO_HUBSAN, nullptr, 0, STR_MULTI_VIDFREQ },
{ MM_RF_PROTO_FRSKY, STR_SUBTYPE_FRSKY, 3, STR_MULTI_RFTUNE },
{ MM_RF_PROTO_FRSKY, STR_SUBTYPE_FRSKY, 5, STR_MULTI_RFTUNE },
{ MM_RF_PROTO_HISKY, STR_SUBTYPE_HISKY, 1, nullptr },
{ MM_RF_PROTO_V2X2, STR_SUBTYPE_V2X2, 1, nullptr },
{ MM_RF_PROTO_DSM2, STR_SUBTYPE_DSM, 3, nullptr },

View file

@ -18,6 +18,7 @@
* GNU General Public License for more details.
*/
#include "opentx.h"
#include "telemetry.h"
MultiModuleStatus multiModuleStatus;
uint8_t multiBindStatus = MULTI_NORMAL_OPERATION;
@ -36,6 +37,7 @@ enum MultiBufferState : uint8_t {
NoProtocolDetected,
MultiFirstByteReceived,
ReceivingMultiProtocol,
ReceivingMultiStatus,
SpektrumTelemetryFallback,
FrskyTelemetryFallbackFirstByte,
FrskyTelemetryFallbackNextBytes,
@ -67,15 +69,6 @@ static void processMultiStatusPacket(const uint8_t *data)
if (wasBinding && !multiModuleStatus.isBinding() && multiBindStatus == MULTI_BIND_INITIATED)
multiBindStatus = MULTI_BIND_FINISHED;
// set moduleFlag to bind status
/*
if (moduleFlag[EXTERNAL_MODULE] != MODULE_RANGECHECK)
// Two times the same status in a row to avoid race conditions
if (multiModuleStatus.isBinding() == wasBinding) {
multiModuleStatus.isBinding() ? moduleFlag[EXTERNAL_MODULE] = MODULE_BIND : MODULE_NORMAL_MODE;
}
*/
}
static void processMultiTelemetryPaket(const uint8_t *packet)
@ -257,9 +250,14 @@ void processMultiTelemetryData(const uint8_t data)
break;
case MultiFirstByteReceived:
telemetryRxBufferCount = 0;
if (data == 'P') {
telemetryRxBufferCount = 0;
multiTelemetryBufferState = ReceivingMultiProtocol;
} else if (data >= 5 && data <= 10) {
// Protocol indented for er9x/ersky9, accept only 5-10 as packet length to have
// a bit of validation
multiTelemetryBufferState = ReceivingMultiStatus;
} else {
TRACE("[MP] invalid second byte 0x%02X", data);
multiTelemetryBufferState = NoProtocolDetected;
@ -269,6 +267,15 @@ void processMultiTelemetryData(const uint8_t data)
case ReceivingMultiProtocol:
processMultiTelemetryByte(data);
break;
case ReceivingMultiStatus:
// Ignore multi status
telemetryRxBuffer[telemetryRxBufferCount++] = data;
if (telemetryRxBufferCount>5) {
processMultiStatusPacket(telemetryRxBuffer);
telemetryRxBufferCount=0;
multiTelemetryBufferState = NoProtocolDetected;
}
}
}

View file

@ -118,7 +118,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"

View file

@ -123,7 +123,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"

View file

@ -122,7 +122,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"

View file

@ -118,7 +118,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"

View file

@ -118,7 +118,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"

View file

@ -118,7 +118,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"

View file

@ -118,7 +118,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"

View file

@ -123,7 +123,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"

View file

@ -119,7 +119,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"

View file

@ -119,7 +119,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"

View file

@ -118,7 +118,7 @@
#define TR_SUBTYPE_AFHDS2A "PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS"
#define LEN_SUBTYPE_FRSKY "\007"
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 "
#define TR_SUBTYPE_FRSKY "D16\0 ""D8\0 ""D16 8ch""V8\0 ""LBT(EU)""LBT 8ch"
#define LEN_SUBTYPE_HISKY "\005"
#define TR_SUBTYPE_HISKY "HiSky""HK310"