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