diff --git a/Multiprotocol/FX_nrf24l01.ino b/Multiprotocol/FX_nrf24l01.ino index b28af53..dd21443 100644 --- a/Multiprotocol/FX_nrf24l01.ino +++ b/Multiprotocol/FX_nrf24l01.ino @@ -18,18 +18,21 @@ Multiprotocol is distributed in the hope that it will be useful, #include "iface_xn297.h" -#define FX_INITIAL_WAIT 500 -#define FX_BIND_COUNT 300 //3sec -#define FX_SWITCH 20 -#define FX_NUM_CHANNELS 4 +#define FX_INITIAL_WAIT 500 +#define FX_BIND_COUNT 300 //3sec +#define FX_SWITCH 20 +#define FX_NUM_CHANNELS 4 -#define FX816_PACKET_PERIOD 10000 -#define FX816_BIND_CHANNEL 40 -#define FX816_PAYLOAD_SIZE 6 +#define FX816_PACKET_PERIOD 10000 +#define FX816_BIND_CHANNEL 40 +#define FX816_PAYLOAD_SIZE 6 +#define FX816_CH_OFFSET 3 -#define FX620_PACKET_PERIOD 3250 -#define FX620_BIND_CHANNEL 18 -#define FX620_PAYLOAD_SIZE 7 +#define FX620_PACKET_PERIOD 3250 +#define FX620_BIND_PACKET_PERIOD 4500 +#define FX620_BIND_CHANNEL 18 +#define FX620_PAYLOAD_SIZE 7 +#define FX620_CH_OFFSET 1 #define FORCE_FX620_ID @@ -45,15 +48,15 @@ static void __attribute__((unused)) FX_send_packet() memset(packet,0x00,packet_length); //Channels - uint8_t offset=sub_protocol == FX816 ? 3:1; - uint8_t val=convert_channel_8b(AILERON); // Can FX620 have a proportional value, the original radio does not but... + uint8_t offset=sub_protocol == FX816 ? FX816_CH_OFFSET:FX620_CH_OFFSET; + uint8_t val=convert_channel_8b(AILERON); if(val>127+FX_SWITCH) packet[offset] = sub_protocol == FX816 ? 1:0xFF; else if(val<127-FX_SWITCH) packet[offset] = sub_protocol == FX816 ? 2:0x00; else packet[offset] = sub_protocol == FX816 ? 0:0x7F; - packet[offset+1] = convert_channel_16b_limit(THROTTLE,0,100); + packet[offset+1] = convert_channel_16b_limit(THROTTLE,0,100); //FX816:0x00..0x63, FX620:0x00..0x5E but that should work //Bind and specifics if(sub_protocol == FX816) @@ -86,7 +89,7 @@ static void __attribute__((unused)) FX_send_packet() packet[packet_length-1]=val; //Debug - #if 0 + #if 1 for(uint8_t i=0;i