diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h
index 6503c76..deffe8c 100644
--- a/Multiprotocol/Multiprotocol.h
+++ b/Multiprotocol/Multiprotocol.h
@@ -19,7 +19,7 @@
#define VERSION_MAJOR 1
#define VERSION_MINOR 3
#define VERSION_REVISION 0
-#define VERSION_PATCH_LEVEL 59
+#define VERSION_PATCH_LEVEL 60
//******************
// Protocols
diff --git a/Multiprotocol/XK_nrf24l01.ino b/Multiprotocol/XK_nrf24l01.ino
index d2bced6..27faa46 100644
--- a/Multiprotocol/XK_nrf24l01.ino
+++ b/Multiprotocol/XK_nrf24l01.ino
@@ -12,7 +12,7 @@ Multiprotocol is distributed in the hope that it will be useful,
You should have received a copy of the GNU General Public License
along with Multiprotocol. If not, see .
*/
-// Compatible with X450 and X420 plane.
+// Compatible with X450 and X420/X520 plane.
#if defined(XK_NRF24L01_INO)
@@ -25,31 +25,31 @@ Multiprotocol is distributed in the hope that it will be useful,
#define XK_RF_BIND_NUM_CHANNELS 8
#define XK_RF_NUM_CHANNELS 4
#define XK_PAYLOAD_SIZE 16
-#define XK_BIND_COUNT 750 //3sec
+#define XK_BIND_COUNT 750 //3sec
static uint16_t __attribute__((unused)) XK_convert_channel(uint8_t num)
{
uint16_t val=convert_channel_10b(num);
// 1FF..01=left, 00=center, 200..3FF=right
if(val==0x200)
- val=0; // 0
+ val=0; // 0
else
if(val>0x200)
- val--; // 200..3FE
+ val--; // 200..3FE
else
{
- val=0x200-val; // 200..01
+ val=0x200-val; // 200..01
if(val==0x200)
- val--; // 1FF..01
+ val--; // 1FF..01
}
return val;
}
static void __attribute__((unused)) XK_send_packet()
{
- memset(packet,0x00,16);
-
- memcpy(&packet[7],rx_tx_addr,3);
+ memset(packet,0x00,7);
+ memset(&packet[10],0x00,5);
+
packet[12]=0x40;
packet[13]=0x40;
if(IS_BIND_IN_PROGRESS)
@@ -58,16 +58,16 @@ static void __attribute__((unused)) XK_send_packet()
{
uint16_t val=convert_channel_10b(THROTTLE);
packet[0] = val>>2; // 0..255
- if(sub_protocol==X450) packet[12] |= val & 2;
+ packet[12] |= val & 2;
val=XK_convert_channel(RUDDER);
packet[1] = val>>2;
- if(sub_protocol==X450) packet[12] |= (val & 2)<<2;
+ packet[12] |= (val & 2)<<2;
val=XK_convert_channel(ELEVATOR);
packet[2] = val>>2;
- if(sub_protocol==X450) packet[13] |= val & 2;
+ packet[13] |= val & 2;
val=XK_convert_channel(AILERON);
packet[3] = val>>2;
- if(sub_protocol==X450) packet[13] |= (val & 2)<<2;
+ packet[13] |= (val & 2)<<2;
memset(&packet[4],0x40,3); // Trims
@@ -91,16 +91,16 @@ static void __attribute__((unused)) XK_send_packet()
crc+=packet[i];
packet[15]=crc;
- //debug("C: %02X, P:",hopping_frequency[(IS_BIND_IN_PROGRESS?0:XK_RF_BIND_NUM_CHANNELS)+(hopping_frequency_no>>1)]);
+ debug("C: %02X, P:",hopping_frequency[(IS_BIND_IN_PROGRESS?0:XK_RF_BIND_NUM_CHANNELS)+(hopping_frequency_no>>1)]);
XN297L_Hopping((IS_BIND_IN_PROGRESS?0:XK_RF_BIND_NUM_CHANNELS)+(hopping_frequency_no>>1));
hopping_frequency_no++;
if(hopping_frequency_no >= (IS_BIND_IN_PROGRESS?XK_RF_BIND_NUM_CHANNELS*2:XK_RF_NUM_CHANNELS*2))
hopping_frequency_no=0;
XN297L_WritePayload(packet, XK_PAYLOAD_SIZE);
- //for(uint8_t i=0; i