diff --git a/Multiprotocol/FX_nrf24l01.ino b/Multiprotocol/FX_nrf24l01.ino index 37ffc79..a25e229 100644 --- a/Multiprotocol/FX_nrf24l01.ino +++ b/Multiprotocol/FX_nrf24l01.ino @@ -38,11 +38,18 @@ Multiprotocol is distributed in the hope that it will be useful, #define FX9630_BIND_CHANNEL 51 #define FX9630_PAYLOAD_SIZE 8 #define FX9630_NUM_CHANNELS 3 +#define FX9630_WRITE_TIME 500 //#define FORCE_FX620_ID //#define FORCE_FX9630_ID //#define FORCE_QIDI_ID +enum +{ + FX_DATA=0, + FX_RX, +}; + static void __attribute__((unused)) FX_send_packet() { static uint8_t trim_ch = 0; @@ -53,7 +60,6 @@ static void __attribute__((unused)) FX_send_packet() XN297_Hopping(hopping_frequency_no++); if(sub_protocol >= FX9630) { // FX9630 & FX_Q560 & FX_QF012 - XN297_SetTXAddr(rx_tx_addr, 4); if (hopping_frequency_no >= FX9630_NUM_CHANNELS) { hopping_frequency_no = 0; @@ -186,7 +192,7 @@ static void __attribute__((unused)) FX_RF_init() packet_period = FX620_BIND_PACKET_PERIOD; packet_length = FX620_PAYLOAD_SIZE; } - else // FX9630 & FX_Q560 + else // FX9630 & FX_Q560 & FX_QF012 { XN297_SetTXAddr((uint8_t *)"\x56\x78\x90\x12", 4); XN297_RFChannel(FX9630_BIND_CHANNEL); @@ -218,7 +224,7 @@ static void __attribute__((unused)) FX_initialize_txid() for(uint8_t i=1;i= FX9630) + { // FX9630 & FX_Q560 & FX_QF012 + XN297_SetTXAddr(rx_tx_addr, 4); + #ifdef FX_HUB_TELEMETRY + XN297_SetRXAddr(rx_tx_addr,packet_length); + #endif + } + } + FX_send_packet(); + #ifdef FX_HUB_TELEMETRY + if(sub_protocol < FX9630) + break; + if(rx) + { + debug("RX"); + if(XN297_ReadPayload(packet_in, packet_length)) + {//Good CRC + telemetry_link = 1; + //v_lipo1 = packet_in[1] == 0x03 ? 0x00:0xFF; // low voltage + #if 1 + for(uint8_t i=0; i < packet_length; i++) + debug(" %02X", packet_in[i]); + #endif + } + debugln(); + } + phase++; + return FX9630_WRITE_TIME; + default: //FX_RX + /* { // Wait for packet to be sent before switching to receive mode + uint16_t start=(uint16_t)micros(), count=0; + while ((uint16_t)((uint16_t)micros()-(uint16_t)start) < 500) + { + if(XN297_IsPacketSent()) + break; + count++; + } + debug("%d",count); + } */ + //Switch to RX + XN297_SetTxRxMode(TXRX_OFF); + XN297_SetTxRxMode(RX_EN); + phase = FX_DATA; + return packet_period - FX9630_WRITE_TIME; } - FX_send_packet(); + #endif return packet_period; } @@ -266,6 +325,10 @@ void FX_init() FX_RF_init(); hopping_frequency_no = 0; bind_counter=FX_BIND_COUNT; + #ifdef FX_HUB_TELEMETRY + RX_RSSI = 100; // Dummy value + phase = FX_DATA; + #endif } #endif diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index e34df69..ecac878 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -19,7 +19,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 3 #define VERSION_REVISION 4 -#define VERSION_PATCH_LEVEL 45 +#define VERSION_PATCH_LEVEL 46 #define MODE_SERIAL 0 diff --git a/Multiprotocol/Validate.h b/Multiprotocol/Validate.h index f8444c1..e0a1caa 100644 --- a/Multiprotocol/Validate.h +++ b/Multiprotocol/Validate.h @@ -494,6 +494,7 @@ #undef PROPEL_HUB_TELEMETRY #undef OMP_HUB_TELEMETRY #undef V761_HUB_TELEMETRY + #undef FX_HUB_TELEMETRY #undef KAMTOM_HUB_TELEMETRY #undef YUXIANG_HUB_TELEMETRY #undef RLINK_HUB_TELEMETRY @@ -534,6 +535,9 @@ #if not defined(V761_NRF24L01_INO) #undef V761_HUB_TELEMETRY #endif + #if not defined(FX_NRF24L01_INO) + #undef FX_HUB_TELEMETRY + #endif #if not defined(KAMTOM_NRF24L01_INO) #undef KAMTOM_HUB_TELEMETRY #endif @@ -597,7 +601,7 @@ //protocols using FRSKYD user frames #undef 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(V761_HUB_TELEMETRY) && not defined(KAMTOM_HUB_TELEMETRY) && not defined(YUXIANG_HUB_TELEMETRY) && not defined(WFLY2_HUB_TELEMETRY) && not defined(LOLI_HUB_TELEMETRY) && not defined(MLINK_HUB_TELEMETRY) && not defined(MLINK_FW_TELEMETRY) && not defined(MT99XX_HUB_TELEMETRY) && not defined(MULTI_CONFIG_INO) + #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(V761_HUB_TELEMETRY) && not defined(FX_HUB_TELEMETRY) && not defined(KAMTOM_HUB_TELEMETRY) && not defined(YUXIANG_HUB_TELEMETRY) && not defined(WFLY2_HUB_TELEMETRY) && not defined(LOLI_HUB_TELEMETRY) && not defined(MLINK_HUB_TELEMETRY) && not defined(MLINK_FW_TELEMETRY) && not defined(MT99XX_HUB_TELEMETRY) && not defined(MULTI_CONFIG_INO) #undef TELEMETRY #undef INVERT_TELEMETRY #undef MULTI_TELEMETRY diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h index 512cf80..1e29725 100644 --- a/Multiprotocol/_Config.h +++ b/Multiprotocol/_Config.h @@ -354,14 +354,15 @@ #define OMP_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX #define V761_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX #define KAMTOM_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX -#define YUXIANG_HUB_TELEMETRY +#define FX_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX +#define YUXIANG_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX #define PROPEL_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX #define CABELL_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX #define RLINK_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX #define WFLY2_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX #define LOLI_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX #define MT99XX_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX -//#define MLINK_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX +//#define MLINK_HUB_TELEMETRY // Use FrSkyD Hub format to send telemetry to TX #define MLINK_FW_TELEMETRY // Forward received telemetry packet directly to TX to be decoded by erskyTX and OpenTX //#define HITEC_HUB_TELEMETRY // Use FrSkyD Hub format to send basic telemetry to the radios which can decode it like er9x, erskyTX and OpenTX #define HITEC_FW_TELEMETRY // Forward received telemetry packets to be decoded by erskyTX and OpenTX