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:
parent
cab26a6a0f
commit
59d9ec131b
15 changed files with 31 additions and 24 deletions
|
@ -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;
|
||||
|
||||
|
|
|
@ -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"};
|
||||
|
|
|
@ -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 },
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue