diff --git a/Multiprotocol/Telemetry.ino b/Multiprotocol/Telemetry.ino index 18a9db0..6526b41 100644 --- a/Multiprotocol/Telemetry.ino +++ b/Multiprotocol/Telemetry.ino @@ -24,6 +24,7 @@ #define STUFF_MASK 0x20 #define MAX_PKTX 10 uint8_t pktx[MAX_PKTX]; +uint8_t pktx1[MAX_PKTX];//second buffer for sport uint8_t idxt; uint8_t pass = 0; uint8_t frame[18]; @@ -119,7 +120,7 @@ void frsky_link_frame() #if defined HUB_TELEMETRY void frsky_user_frame() { - uint8_t indexx = 0, c=0, j=8, n=0, i; + uint8_t indexx = 0, j=8, i; if(pktt[6]>0 && pktt[6]<=10) {//only valid hub frames @@ -131,18 +132,8 @@ void frsky_user_frame() indexx=pktt[6]; for(i=0;i= FRSKY_SPORT_PACKET_SIZE) {//8 bytes no crc - sport = 1;//ok to send + if ( sport ) + { + // overrun! do nothing + } + else + { + uint8_t i ; + for ( i = 0 ; i < FRSKY_SPORT_PACKET_SIZE ; i += 1 ) + { + pktx1[i] = pktx[i] ; // Double buffer + } + sport = 1;//ok to send + } pass = 0;//reset } } @@ -382,10 +386,10 @@ void frskyUpdate() { // FrSkyX if(telemetry_link) { - if(pktt[4]>0x36) - rssi=pktt[4]>>1; + if(pktt[4] & 0x80) + rssi=pktt[4] & 0x7F ; else - RxBt=pktt[4]; + RxBt = (pktt[4]<<1) + 1 ; for (uint8_t i=0; i < pktt[6]; i++) proces_sport_data(pktt[7+i]); telemetry_link=0;