diff --git a/Multiprotocol/AFHDS2A_Rx_a7105.ino b/Multiprotocol/AFHDS2A_Rx_a7105.ino index c90c1d5..1c4cc51 100644 --- a/Multiprotocol/AFHDS2A_Rx_a7105.ino +++ b/Multiprotocol/AFHDS2A_Rx_a7105.ino @@ -104,6 +104,7 @@ uint16_t AFHDS2A_Rx_callback() switch(phase) { case AFHDS2A_RX_BIND1: + if(IS_BIND_DONE) return initAFHDS2A_Rx(); // Abort bind if (AFHDS2A_Rx_data_ready()) { A7105_ReadData(AFHDS2A_RX_TXPACKET_SIZE); if ((packet[0] == 0xbb && packet[9] == 0x01) || (packet[0] == 0xbc && packet[9] <= 0x02)) { @@ -118,6 +119,7 @@ uint16_t AFHDS2A_Rx_callback() return 10000; case AFHDS2A_RX_BIND2: + if(IS_BIND_DONE) return initAFHDS2A_Rx(); // Abort bind // got 2nd bind packet from tx ? if (AFHDS2A_Rx_data_ready()) { A7105_ReadData(AFHDS2A_RX_TXPACKET_SIZE); @@ -143,6 +145,7 @@ uint16_t AFHDS2A_Rx_callback() packet[9] = 0x01; packet[10] = 0x00; memset(&packet[11], 0xFF, 26); + A7105_SetTxRxMode(TX_EN); A7105_WriteData(AFHDS2A_RX_RXPACKET_SIZE, packet_count++ & 1 ? 0x0D : 0x8C); phase |= AFHDS2A_RX_WAIT_WRITE; return 1700; @@ -153,6 +156,7 @@ uint16_t AFHDS2A_Rx_callback() while (micros() - pps_timer < 700) // Wait max 700µs, using serial+telemetry exit in about 120µs if (!(A7105_ReadReg(A7105_00_MODE) & 0x01)) break; + A7105_SetTxRxMode(RX_EN); A7105_Strobe(A7105_RX); phase &= ~AFHDS2A_RX_WAIT_WRITE; return 10000; diff --git a/Multiprotocol/Bayang_Rx_nrf24l01.ino b/Multiprotocol/Bayang_Rx_nrf24l01.ino index 31197b6..d85230f 100644 --- a/Multiprotocol/Bayang_Rx_nrf24l01.ino +++ b/Multiprotocol/Bayang_Rx_nrf24l01.ino @@ -129,6 +129,7 @@ uint16_t Bayang_Rx_callback() switch (phase) { case BAYANG_RX_BIND: + if(IS_BIND_DONE) return initBayang_Rx(); // Abort bind if (NRF24L01_ReadReg(NRF24L01_07_STATUS) & _BV(NRF24L01_07_RX_DR)) { // data received from TX if (XN297_ReadPayload(packet, BAYANG_RX_PACKET_SIZE) && ( packet[0] == 0xA4 || packet[0] == 0xA2 ) && Bayang_Rx_check_validity()) { diff --git a/Multiprotocol/FrSky_Rx_cc2500.ino b/Multiprotocol/FrSky_Rx_cc2500.ino index 47bcc06..0ca6ac9 100644 --- a/Multiprotocol/FrSky_Rx_cc2500.ino +++ b/Multiprotocol/FrSky_Rx_cc2500.ino @@ -383,6 +383,8 @@ uint16_t FrSky_Rx_callback() static int8_t tune_low, tune_high; uint8_t len, ch; + if(IS_BIND_DONE && phase != FRSKY_RX_DATA) return initFrSky_Rx(); // Abort bind + if ((prev_option != option) && (phase >= FRSKY_RX_DATA)) { if (option == 0) diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index 1baa351..96149d9 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -19,7 +19,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 3 #define VERSION_REVISION 1 -#define VERSION_PATCH_LEVEL 49 +#define VERSION_PATCH_LEVEL 50 //****************** // Protocols