diff --git a/Multiprotocol/Multiprotocol.ino b/Multiprotocol/Multiprotocol.ino index e0c5a34..379bf09 100644 --- a/Multiprotocol/Multiprotocol.ino +++ b/Multiprotocol/Multiprotocol.ino @@ -821,7 +821,7 @@ bool Update_All() update_led_status(); #if defined(TELEMETRY) #if ( !( defined(MULTI_TELEMETRY) || defined(MULTI_STATUS) ) ) - if((protocol == PROTO_BAYANG_RX) || (protocol == PROTO_AFHDS2A_RX) || (protocol == PROTO_FRSKY_RX) || (protocol == PROTO_SCANNER) || (protocol==PROTO_FRSKYD) || (protocol==PROTO_BAYANG) || (protocol==PROTO_NCC1701) || (protocol==PROTO_BUGS) || (protocol==PROTO_BUGSMINI) || (protocol==PROTO_HUBSAN) || (protocol==PROTO_AFHDS2A) || (protocol==PROTO_FRSKYX) || (protocol==PROTO_FRSKYX2) || (protocol==PROTO_DSM) || (protocol==PROTO_CABELL) || (protocol==PROTO_HITEC) || (protocol==PROTO_HOTT) || (protocol==PROTO_PROPEL) || (protocol==PROTO_OMP) || (protocol==PROTO_DEVO) || (protocol==PROTO_DSM_RX) || (protocol==PROTO_FRSKY_R9) || (protocol==PROTO_RLINK)) + if((protocol == PROTO_BAYANG_RX) || (protocol == PROTO_AFHDS2A_RX) || (protocol == PROTO_FRSKY_RX) || (protocol == PROTO_SCANNER) || (protocol==PROTO_FRSKYD) || (protocol==PROTO_BAYANG) || (protocol==PROTO_NCC1701) || (protocol==PROTO_BUGS) || (protocol==PROTO_BUGSMINI) || (protocol==PROTO_HUBSAN) || (protocol==PROTO_AFHDS2A) || (protocol==PROTO_FRSKYX) || (protocol==PROTO_FRSKYX2) || (protocol==PROTO_DSM) || (protocol==PROTO_CABELL) || (protocol==PROTO_HITEC) || (protocol==PROTO_HOTT) || (protocol==PROTO_PROPEL) || (protocol==PROTO_OMP) || (protocol==PROTO_DEVO) || (protocol==PROTO_DSM_RX) || (protocol==PROTO_FRSKY_R9) || (protocol==PROTO_RLINK) || (protocol==PROTO_WFLYRF)) #endif if(IS_DISABLE_TELEM_off) TelemetryUpdate(); @@ -2290,7 +2290,7 @@ void pollBoot() #if defined(TELEMETRY) void PPM_Telemetry_serial_init() { - if( (protocol==PROTO_FRSKYD) || (protocol==PROTO_HUBSAN) || (protocol==PROTO_AFHDS2A) || (protocol==PROTO_BAYANG)|| (protocol==PROTO_NCC1701) || (protocol==PROTO_CABELL) || (protocol==PROTO_HITEC) || (protocol==PROTO_BUGS) || (protocol==PROTO_BUGSMINI) || (protocol==PROTO_PROPEL) || (protocol==PROTO_OMP) || (protocol==PROTO_RLINK) + if( (protocol==PROTO_FRSKYD) || (protocol==PROTO_HUBSAN) || (protocol==PROTO_AFHDS2A) || (protocol==PROTO_BAYANG)|| (protocol==PROTO_NCC1701) || (protocol==PROTO_CABELL) || (protocol==PROTO_HITEC) || (protocol==PROTO_BUGS) || (protocol==PROTO_BUGSMINI) || (protocol==PROTO_PROPEL) || (protocol==PROTO_OMP) || (protocol==PROTO_RLINK) || (protocol==PROTO_WFLYRF) #ifdef TELEMETRY_FRSKYX_TO_FRSKYD || (protocol==PROTO_FRSKYX) || (protocol==PROTO_FRSKYX2) #endif diff --git a/Multiprotocol/Telemetry.ino b/Multiprotocol/Telemetry.ino index 6c97d66..62b8483 100644 --- a/Multiprotocol/Telemetry.ino +++ b/Multiprotocol/Telemetry.ino @@ -531,7 +531,7 @@ void frsky_link_frame() telemetry_link |= 2 ; // Send hub if available } else - {//PROTO_HUBSAN, PROTO_AFHDS2A, PROTO_BAYANG, PROTO_NCC1701, PROTO_CABELL, PROTO_HITEC, PROTO_BUGS, PROTO_BUGSMINI, PROTO_FRSKYX, PROTO_FRSKYX2, PROTO_PROPEL, PROTO_DEVO, PROTO_RLINK, PROTO_OMP + {//PROTO_HUBSAN, PROTO_AFHDS2A, PROTO_BAYANG, PROTO_NCC1701, PROTO_CABELL, PROTO_HITEC, PROTO_BUGS, PROTO_BUGSMINI, PROTO_FRSKYX, PROTO_FRSKYX2, PROTO_PROPEL, PROTO_DEVO, PROTO_RLINK, PROTO_OMP, PROTO_WFLYRF frame[1] = v_lipo1; frame[2] = v_lipo2; frame[3] = RX_RSSI; diff --git a/Multiprotocol/Validate.h b/Multiprotocol/Validate.h index 6887fd3..e831984 100644 --- a/Multiprotocol/Validate.h +++ b/Multiprotocol/Validate.h @@ -355,6 +355,7 @@ #undef RLINK_HUB_TELEMETRY #undef DSM_RX_CYRF6936_INO #undef DSM_FWD_PGM + #undef WFLYRF_HUB_TELEMETRY #else #if defined(MULTI_TELEMETRY) && defined(MULTI_STATUS) #error You should choose either MULTI_TELEMETRY or MULTI_STATUS but not both. @@ -426,7 +427,10 @@ #if not defined(HOTT_CC2500_INO) #undef HOTT_FW_TELEMETRY #endif - #if not defined(HOTT_FW_TELEMETRY) && not defined(DSM_TELEMETRY) && not defined(SPORT_TELEMETRY) && not defined(HUB_TELEMETRY) && not defined(HUBSAN_HUB_TELEMETRY) && not defined(BUGS_HUB_TELEMETRY) && not defined(NCC1701_HUB_TELEMETRY) && not defined(BAYANG_HUB_TELEMETRY) && not defined(CABELL_HUB_TELEMETRY) && not defined(RLINK_HUB_TELEMETRY) && not defined(AFHDS2A_HUB_TELEMETRY) && not defined(AFHDS2A_FW_TELEMETRY) && not defined(MULTI_TELEMETRY) && not defined(MULTI_STATUS) && not defined(HITEC_HUB_TELEMETRY) && not defined(HITEC_FW_TELEMETRY) && not defined(SCANNER_TELEMETRY) && not defined(FRSKY_RX_TELEMETRY) && not defined(AFHDS2A_RX_TELEMETRY) && not defined(BAYANG_RX_TELEMETRY) && not defined(DEVO_HUB_TELEMETRY) && not defined(PROPEL_HUB_TELEMETRY) && not defined(OMP_HUB_TELEMETRY) + #if not defined(WFLYRF_A7105_INO) + #undef WFLYRF_HUB_TELEMETRY + #endif + #if not defined(HOTT_FW_TELEMETRY) && not defined(DSM_TELEMETRY) && not defined(SPORT_TELEMETRY) && not defined(HUB_TELEMETRY) && not defined(HUBSAN_HUB_TELEMETRY) && not defined(BUGS_HUB_TELEMETRY) && not defined(NCC1701_HUB_TELEMETRY) && not defined(BAYANG_HUB_TELEMETRY) && not defined(CABELL_HUB_TELEMETRY) && not defined(RLINK_HUB_TELEMETRY) && not defined(AFHDS2A_HUB_TELEMETRY) && not defined(AFHDS2A_FW_TELEMETRY) && not defined(MULTI_TELEMETRY) && not defined(MULTI_STATUS) && not defined(HITEC_HUB_TELEMETRY) && not defined(HITEC_FW_TELEMETRY) && not defined(SCANNER_TELEMETRY) && not defined(FRSKY_RX_TELEMETRY) && not defined(AFHDS2A_RX_TELEMETRY) && not defined(BAYANG_RX_TELEMETRY) && not defined(DEVO_HUB_TELEMETRY) && not defined(PROPEL_HUB_TELEMETRY) && not defined(OMP_HUB_TELEMETRY) && not defined(WFLYRF_HUB_TELEMETRY) #undef TELEMETRY #undef INVERT_TELEMETRY #undef MULTI_TELEMETRY diff --git a/Multiprotocol/WFLYRF_a7105.ino b/Multiprotocol/WFLYRF_a7105.ino index 5a6a79e..2450791 100644 --- a/Multiprotocol/WFLYRF_a7105.ino +++ b/Multiprotocol/WFLYRF_a7105.ino @@ -130,13 +130,38 @@ static void __attribute__((unused)) WFLYRF_build_packet() #endif } -#define WFLYRF_PACKET_PERIOD 3600 -#define WFLYRF_BUFFER_TIME 1500 -#define WFLYRF_WRITE_TIME 942 +#ifdef WFLYRF_HUB_TELEMETRY + static void __attribute__((unused)) WFLYRF_Send_Telemetry() + { + //Incoming packet values + v_lipo1=packet[3]<<1; // RX_batt*10 in V + RX_RSSI=(255-packet[7])>>1; // Looks to be the RX RSSI value direct from A7105 + + // Read TX RSSI + TX_RSSI=255-A7105_ReadReg(A7105_1D_RSSI_THOLD); + + telemetry_counter++; // LQI counter + telemetry_link=1; + if(telemetry_lost) + { + telemetry_lost = 0; + packet_count = 100; + telemetry_counter = 100; + } + } +#endif + +#define WFLYRF_PACKET_PERIOD 3600 //3600 +#define WFLYRF_BUFFER_TIME 1500 //1500 +#define WFLYRF_WRITE_TIME 800 //942 uint16_t ReadWFLYRF() { uint16_t start; + #ifdef WFLYRF_HUB_TELEMETRY + uint8_t status; + #endif + #ifndef FORCE_WFLYRF_TUNING A7105_AdjustLOBaseFreq(1); #endif @@ -158,10 +183,10 @@ uint16_t ReadWFLYRF() #ifdef MULTI_SYNC telemetry_set_input_sync(WFLYRF_PACKET_PERIOD); #endif - //Build packet + //Build data packet WFLYRF_build_packet(); - //Fill the buffer + //Fill the TX buffer without sending A7105_WriteReg(A7105_03_FIFOI, 0x1F); A7105_CSN_off; SPI_Write(A7105_RST_WRPTR); @@ -170,42 +195,78 @@ uint16_t ReadWFLYRF() SPI_Write(packet[i]); A7105_CSN_on; + #ifdef WFLYRF_HUB_TELEMETRY + //LQI calculation + packet_count++; + if(packet_count>=100) + { + packet_count=0; + TX_LQI=telemetry_counter; + if(telemetry_counter==0) + telemetry_lost = 1; + telemetry_counter = 0; + } + #endif + phase++; // WFLYRF_PLL_TX return WFLYRF_BUFFER_TIME; + case WFLYRF_PLL_TX: + #ifdef WFLYRF_HUB_TELEMETRY + //Check RX status + status=A7105_ReadReg(A7105_00_MODE); + //debugln("S:%02X", status); + #endif + + //PLL A7105_Strobe(A7105_PLL); - //Check if RX - //if((A7105_ReadReg(A7105_00_MODE) & 0x01) && !(A7105_ReadReg(A7105_00_MODE) & (1<<5 | 1<<6))) - if(!(A7105_ReadReg(A7105_00_MODE) & (1<<5 | 1<<6))) - { // RX+FECF+CRCF Ok + + #ifdef WFLYRF_HUB_TELEMETRY + //Read incoming packet even if bad/not present to not change too much the TX timing, might want to reorg the code... A7105_ReadData(WFLYRF_PACKET_SIZE); - //Debug - #if 0 - debug("T:"); - for(uint8_t i=0; i