mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-04 18:38:13 +00:00
MULTI_TELEMETRY: couple of additions
This commit is contained in:
parent
c6221fc60f
commit
f56c9deb00
@ -13,6 +13,13 @@
|
||||
along with Multiprotocol. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
//******************
|
||||
// Version
|
||||
//******************
|
||||
#define VERSION_MAJOR 1
|
||||
#define VERSION_MINOR 16
|
||||
#define VERSION_PATCH_LEVEL 1
|
||||
|
||||
//******************
|
||||
// Protocols
|
||||
//******************
|
||||
@ -565,7 +572,7 @@ Type = 0x01 Multimodule Status:
|
||||
0x04 = protocol is valid
|
||||
0x08 = module is in binding mode
|
||||
[5] major
|
||||
[6] mior
|
||||
[6] minor
|
||||
[7-8] patchlevel
|
||||
version of multi code, should be displayed as major.minor.patchlevel
|
||||
|
||||
|
@ -491,7 +491,7 @@ void Update_All()
|
||||
update_channels_aux();
|
||||
#if defined(TELEMETRY)
|
||||
#if !defined(MULTI_TELEMETRY)
|
||||
if((protocol==MODE_FRSKYD) || (protocol==MODE_BAYANG) || (protocol==MODE_HUBSAN) || (protocol==MODE_AFHDS2A) || (protocol==MODE_FRSKYX) || (protocol==MODE_DSM) )
|
||||
if((protocol==MODE_FRSKYD) || (protocol==MODE_BAYANG) || (protocol==MODE_HUBSAN) || (protocol==MODE_AFHDS2A) || (protocol==MODE_FRSKYX) || (protocol==MODE_DSM) )
|
||||
#endif
|
||||
TelemetryUpdate();
|
||||
#endif
|
||||
@ -1004,12 +1004,21 @@ void Mprotocol_serial_init()
|
||||
#if defined(TELEMETRY)
|
||||
void PPM_Telemetry_serial_init()
|
||||
{
|
||||
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 ) ;
|
||||
#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
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -78,8 +78,8 @@ static void multi_send_status()
|
||||
multi_send_header(MULTI_TELEMETRY_STATUS, 5);
|
||||
|
||||
// Build flags
|
||||
uint8_t flags;
|
||||
if (millis()-last_signal<70)
|
||||
uint8_t flags=0;
|
||||
if (IS_INPUT_SIGNAL_on)
|
||||
flags |= 0x01;
|
||||
if (mode_select==MODE_SERIAL)
|
||||
flags |= 0x02;
|
||||
@ -89,50 +89,50 @@ static void multi_send_status()
|
||||
flags |= 0x08;
|
||||
Serial_write(flags);
|
||||
|
||||
// Version number: 1.15.0
|
||||
Serial_write(1);
|
||||
Serial_write(15);
|
||||
Serial_write(0);
|
||||
// Version number example: 1.16.1
|
||||
Serial_write(VERSION_MAJOR);
|
||||
Serial_write(VERSION_MINOR);
|
||||
Serial_write(VERSION_PATCH_LEVEL);
|
||||
Serial_write(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef DSM_TELEMETRY
|
||||
#if defined MULTI_TELEMETRY
|
||||
void DSM_frame()
|
||||
{
|
||||
if (pkt[0] == 0x80) {
|
||||
multi_send_header(MULTI_TELEMETRY_DSMBIND, 10);
|
||||
for (uint8_t i = 1; i < 11; i++) // 10 byte of DSM bind response
|
||||
Serial_write(pkt[i]);
|
||||
#ifdef MULTI_TELEMETRY
|
||||
void DSM_frame()
|
||||
{
|
||||
if (pkt[0] == 0x80) {
|
||||
multi_send_header(MULTI_TELEMETRY_DSMBIND, 10);
|
||||
for (uint8_t i = 1; i < 11; i++) // 10 byte of DSM bind response
|
||||
Serial_write(pkt[i]);
|
||||
|
||||
} else {
|
||||
multi_send_header(MULTI_TELEMETRY_DSM, 17);
|
||||
for (uint8_t i = 0; i < 29; i++) // RSSI value followed by 4*7 bytes of telemetry data
|
||||
Serial_write(pkt[i]);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void DSM_frame()
|
||||
{
|
||||
Serial_write(0xAA); // Telemetry packet
|
||||
for (uint8_t i = 0; i < 17; i++) // RSSI value followed by 16 bytes of telemetry data
|
||||
Serial_write(pkt[i]);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
multi_send_header(MULTI_TELEMETRY_DSM, 17);
|
||||
for (uint8_t i = 0; i < 29; i++) // RSSI value followed by 4*7 bytes of telemetry data
|
||||
Serial_write(pkt[i]);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void DSM_frame()
|
||||
{
|
||||
Serial_write(0xAA); // Telemetry packet
|
||||
for (uint8_t i = 0; i < 17; i++) // RSSI value followed by 16 bytes of telemetry data
|
||||
Serial_write(pkt[i]);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef AFHDS2A_FW_TELEMETRY
|
||||
void AFHDSA_short_frame()
|
||||
{
|
||||
#if defined MULTI_TELEMETRY
|
||||
multi_send_header(MULTI_TELEMETRY_AFHDS2A, 29);
|
||||
#else
|
||||
Serial_write(0xAA); // Telemetry packet
|
||||
#endif
|
||||
for (uint8_t i = 0; i < 29; i++) // RSSI value followed by 4*7 bytes of telemetry data
|
||||
Serial_write(pkt[i]);
|
||||
}
|
||||
void AFHDSA_short_frame()
|
||||
{
|
||||
#if defined MULTI_TELEMETRY
|
||||
multi_send_header(MULTI_TELEMETRY_AFHDS2A, 29);
|
||||
#else
|
||||
Serial_write(0xAA); // Telemetry packet
|
||||
#endif
|
||||
for (uint8_t i = 0; i < 29; i++) // RSSI value followed by 4*7 bytes of telemetry data
|
||||
Serial_write(pkt[i]);
|
||||
}
|
||||
#endif
|
||||
|
||||
void frskySendStuffed()
|
||||
@ -222,11 +222,11 @@ void frsky_link_frame()
|
||||
frame[4] = TX_RSSI;
|
||||
}
|
||||
frame[5] = frame[6] = frame[7] = frame[8] = 0;
|
||||
#if defined MULTI_TELEMETRY
|
||||
multi_send_frskyhub();
|
||||
#else
|
||||
frskySendStuffed();
|
||||
#endif
|
||||
#if defined MULTI_TELEMETRY
|
||||
multi_send_frskyhub();
|
||||
#else
|
||||
frskySendStuffed();
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined HUB_TELEMETRY
|
||||
@ -292,11 +292,11 @@ void frsky_user_frame()
|
||||
if(!indx)
|
||||
return;
|
||||
frame[1] = indx;
|
||||
#if defined MULTI_TELEMETRY
|
||||
multi_send_frskyhub();
|
||||
#else
|
||||
frskySendStuffed();
|
||||
#endif
|
||||
#if defined MULTI_TELEMETRY
|
||||
multi_send_frskyhub();
|
||||
#else
|
||||
frskySendStuffed();
|
||||
#endif
|
||||
}
|
||||
else
|
||||
pass=0;
|
||||
@ -368,60 +368,59 @@ pkt[6]|(counter++)|00 01 02 03 04 05 06 07 08 09
|
||||
|
||||
*/
|
||||
#ifdef MULTI_TELEMETRY
|
||||
void sportSend(uint8_t *p)
|
||||
{
|
||||
multi_send_header(MULTI_TELEMETRY_SPORT, 9);
|
||||
uint16_t crc_s = 0;
|
||||
Serial_write(p[0]) ;
|
||||
for (uint8_t i = 1; i < 9; i++)
|
||||
void sportSend(uint8_t *p)
|
||||
{
|
||||
if (i == 8)
|
||||
p[i] = 0xff - crc_s;
|
||||
Serial_write(p[i]);
|
||||
|
||||
if (i>0)
|
||||
multi_send_header(MULTI_TELEMETRY_SPORT, 9);
|
||||
uint16_t crc_s = 0;
|
||||
Serial_write(p[0]) ;
|
||||
for (uint8_t i = 1; i < 9; i++)
|
||||
{
|
||||
crc_s += p[i]; //0-1FF
|
||||
crc_s += crc_s >> 8; //0-100
|
||||
crc_s &= 0x00ff;
|
||||
if (i == 8)
|
||||
p[i] = 0xff - crc_s;
|
||||
Serial_write(p[i]);
|
||||
|
||||
if (i>0)
|
||||
{
|
||||
crc_s += p[i]; //0-1FF
|
||||
crc_s += crc_s >> 8; //0-100
|
||||
crc_s &= 0x00ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
void sportSend(uint8_t *p)
|
||||
{
|
||||
uint16_t crc_s = 0;
|
||||
Serial_write(START_STOP);//+9
|
||||
Serial_write(p[0]) ;
|
||||
for (uint8_t i = 1; i < 9; i++)
|
||||
void sportSend(uint8_t *p)
|
||||
{
|
||||
if (i == 8)
|
||||
p[i] = 0xff - crc_s;
|
||||
|
||||
if ((p[i] == START_STOP) || (p[i] == BYTESTUFF))
|
||||
uint16_t crc_s = 0;
|
||||
Serial_write(START_STOP);//+9
|
||||
Serial_write(p[0]) ;
|
||||
for (uint8_t i = 1; i < 9; i++)
|
||||
{
|
||||
Serial_write(BYTESTUFF);//stuff again
|
||||
Serial_write(STUFF_MASK ^ p[i]);
|
||||
}
|
||||
else
|
||||
Serial_write(p[i]);
|
||||
|
||||
if (i>0)
|
||||
{
|
||||
crc_s += p[i]; //0-1FF
|
||||
crc_s += crc_s >> 8; //0-100
|
||||
crc_s &= 0x00ff;
|
||||
if (i == 8)
|
||||
p[i] = 0xff - crc_s;
|
||||
|
||||
if ((p[i] == START_STOP) || (p[i] == BYTESTUFF))
|
||||
{
|
||||
Serial_write(BYTESTUFF);//stuff again
|
||||
Serial_write(STUFF_MASK ^ p[i]);
|
||||
}
|
||||
else
|
||||
Serial_write(p[i]);
|
||||
|
||||
if (i>0)
|
||||
{
|
||||
crc_s += p[i]; //0-1FF
|
||||
crc_s += crc_s >> 8; //0-100
|
||||
crc_s &= 0x00ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void sportIdle()
|
||||
{
|
||||
#if !defined MULTI_TELEMETRY
|
||||
Serial_write(START_STOP);
|
||||
#endif
|
||||
#if !defined MULTI_TELEMETRY
|
||||
Serial_write(START_STOP);
|
||||
#endif
|
||||
}
|
||||
|
||||
void sportSendFrame()
|
||||
|
@ -74,8 +74,9 @@
|
||||
#undef BAYANG_HUB_TELEMETRY
|
||||
#undef HUBSAN_HUB_TELEMETRY
|
||||
#undef HUB_TELEMETRY
|
||||
#undef SPORT_TELEMETRY
|
||||
#undef DSM_TELEMETRY
|
||||
#undef SPORT_TELEMETRY
|
||||
#undef DSM_TELEMETRY
|
||||
#undef MULTI_TELEMETRY
|
||||
#else
|
||||
#if not defined(BAYANG_NRF24L01_INO)
|
||||
#undef BAYANG_HUB_TELEMETRY
|
||||
|
@ -89,7 +89,6 @@
|
||||
#define SYMAX_NRF24L01_INO
|
||||
#define V2X2_NRF24L01_INO
|
||||
#define YD717_NRF24L01_INO
|
||||
|
||||
#define MT99XX_NRF24L01_INO
|
||||
#define MJXQ_NRF24L01_INO
|
||||
#define SHENQI_NRF24L01_INO
|
||||
@ -111,6 +110,10 @@
|
||||
//For ER9X and ERSKY9X it must be commented. For OpenTX it must be uncommented.
|
||||
//#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
|
||||
//#define MULTI_TELEMETRY
|
||||
|
||||
//Comment a line to disable a protocol telemetry
|
||||
#define DSM_TELEMETRY // Forward received telemetry packet directly to TX to be decoded
|
||||
#define SPORT_TELEMETRY // Use FrSkyX SPORT format to send telemetry to TX
|
||||
@ -119,7 +122,6 @@
|
||||
#define AFHDS2A_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX
|
||||
#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
|
||||
#define MULTI_TELEMETRY // Send also Multi status and wrap other telemetry to allow TX to autodetect the format
|
||||
|
||||
/****************************/
|
||||
/*** SERIAL MODE SETTINGS ***/
|
||||
|
Loading…
x
Reference in New Issue
Block a user