Multiprotocol status

Along with the latest ersky9x version, display the module version and if
a specific protocol is available or not.
This commit is contained in:
pascallanger 2017-01-30 16:11:38 +01:00
parent e30ebd39fd
commit 7ee918ad49
3 changed files with 46 additions and 55 deletions

View File

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

View File

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

View File

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