From 7ee918ad4998d022701179f978fec5a745f51962 Mon Sep 17 00:00:00 2001 From: pascallanger Date: Mon, 30 Jan 2017 16:11:38 +0100 Subject: [PATCH] Multiprotocol status Along with the latest ersky9x version, display the module version and if a specific protocol is available or not. --- Multiprotocol/Multiprotocol.ino | 25 ++++--------- Multiprotocol/Telemetry.ino | 66 +++++++++++++++------------------ Multiprotocol/_Config.h | 10 ++++- 3 files changed, 46 insertions(+), 55 deletions(-) diff --git a/Multiprotocol/Multiprotocol.ino b/Multiprotocol/Multiprotocol.ino index 8bed2d8..9f44658 100644 --- a/Multiprotocol/Multiprotocol.ino +++ b/Multiprotocol/Multiprotocol.ino @@ -499,10 +499,10 @@ void Update_All() } update_channels_aux(); #if defined(TELEMETRY) - #if !defined(MULTI_TELEMETRY) + #if ( !( defined(MULTI_TELEMETRY) || defined(MULTI_STATUS) ) ) if((protocol==MODE_FRSKYD) || (protocol==MODE_BAYANG) || (protocol==MODE_HUBSAN) || (protocol==MODE_AFHDS2A) || (protocol==MODE_FRSKYX) || (protocol==MODE_DSM) ) #endif - TelemetryUpdate(); + TelemetryUpdate(); #endif update_led_status(); } @@ -1042,21 +1042,12 @@ void Mprotocol_serial_init() #if defined(TELEMETRY) void PPM_Telemetry_serial_init() { - #ifdef MULTI_TELEMETRY - Mprotocol_serial_init(); - #ifndef ORANGE_TX - #ifndef STM32_BOARD - UCSR0B &= ~(_BV(RXEN0)|_BV(RXCIE0));//rx disable and interrupt - #endif - #endif - #else - if( (protocol==MODE_FRSKYD) || (protocol==MODE_HUBSAN) || (protocol==MODE_AFHDS2A) || (protocol==MODE_BAYANG) ) - initTXSerial( SPEED_9600 ) ; - if(protocol==MODE_FRSKYX) - initTXSerial( SPEED_57600 ) ; - if(protocol==MODE_DSM) - initTXSerial( SPEED_125K ) ; - #endif + if( (protocol==MODE_FRSKYD) || (protocol==MODE_HUBSAN) || (protocol==MODE_AFHDS2A) || (protocol==MODE_BAYANG) ) + initTXSerial( SPEED_9600 ) ; + if(protocol==MODE_FRSKYX) + initTXSerial( SPEED_57600 ) ; + if(protocol==MODE_DSM) + initTXSerial( SPEED_125K ) ; } #endif diff --git a/Multiprotocol/Telemetry.ino b/Multiprotocol/Telemetry.ino index 747b065..7b3e85c 100644 --- a/Multiprotocol/Telemetry.ino +++ b/Multiprotocol/Telemetry.ino @@ -17,8 +17,8 @@ //************************** #if defined TELEMETRY -#if defined MULTI_TELEMETRY - #define MULTI_TIME 250 //in ms +#if ( defined(MULTI_TELEMETRY) || defined(MULTI_STATUS) ) + #define MULTI_TIME 500 //in ms uint32_t lastMulti = 0; #endif @@ -57,20 +57,17 @@ uint8_t frame[18]; } SerialControl ; #endif -#ifdef MULTI_TELEMETRY +#if ( defined(MULTI_TELEMETRY) || defined(MULTI_STATUS) ) static void multi_send_header(uint8_t type, uint8_t len) { - Serial_write('M'); - Serial_write('P'); - Serial_write(type); - Serial_write(len); -} - -static void multi_send_frskyhub() -{ - multi_send_header(MULTI_TELEMETRY_HUB, 9); - for (uint8_t i = 0; i < 9; i++) - Serial_write(frame[i]); + Serial_write('M'); + #ifdef MULTI_TELEMETRY + Serial_write('P'); + Serial_write(type); + #else + (void)type; + #endif + Serial_write(len); } static void multi_send_status() @@ -138,6 +135,15 @@ static void multi_send_status() } #endif +#ifdef MULTI_TELEMETRY +static void multi_send_frskyhub() +{ + multi_send_header(MULTI_TELEMETRY_HUB, 9); + for (uint8_t i = 0; i < 9; i++) + Serial_write(frame[i]); +} +#endif + void frskySendStuffed() { Serial_write(START_STOP); @@ -538,45 +544,33 @@ void TelemetryUpdate() h = SerialControl.head ; t = SerialControl.tail ; if ( h >= t ) - { t += 64 - h ; - } else - { t -= h ; - } if ( t < 32 ) - { return ; - } - #else uint8_t h ; uint8_t t ; h = tx_head ; t = tx_tail ; if ( h >= t ) - { t += TXBUFFER_SIZE - h ; - } else - { t -= h ; - } if ( t < 16 ) - { return ; - } #endif - #if defined MULTI_TELEMETRY - { - uint32_t now = millis(); - if ((now - lastMulti) > MULTI_TIME) { - multi_send_status(); - lastMulti = now; - return; - } - } + #if ( defined(MULTI_TELEMETRY) || defined(MULTI_STATUS) ) + { + uint32_t now = millis(); + if ((now - lastMulti) > MULTI_TIME) + { + multi_send_status(); + lastMulti = now; + return; + } + } #endif #if defined SPORT_TELEMETRY diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h index 3d8d0e3..00b62dc 100644 --- a/Multiprotocol/_Config.h +++ b/Multiprotocol/_Config.h @@ -120,8 +120,11 @@ //For er9x it depends if you have an inveter mod or not on the telemetry pin. If you don't have an inverter comment this line. #define INVERT_TELEMETRY -//Uncomment to send also Multi status and wrap other telemetry to allow TX to autodetect the format -//Only for newest OpenTX version +//Comment if you don't want to send Multi status telemetry frames (Protocol available, Bind in progress, version...) +#define MULTI_STATUS + +//Uncomment to send Multi status and wrap other telemetry to allow TX to autodetect the format +//Only for newest OpenTX version, not supported by er9x/ersky9x //#define MULTI_TELEMETRY //Comment a line to disable a protocol telemetry @@ -133,6 +136,7 @@ #define BAYANG_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX #define HUBSAN_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX + /****************************/ /*** SERIAL MODE SETTINGS ***/ /****************************/ @@ -258,6 +262,8 @@ const PPM_Parameters PPM_prot[15]= { MODE_FRSKYX CH_16 CH_8 + EU_16 + EU_8 MODE_ESKY NONE MODE_MT99XX