/* This project is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Multiprotocol is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Multiprotocol. If not, see . */ #if defined(BUMBLEB_CCNRF_INO) #include "iface_xn297.h" #define FORCE_BUMBLEB_ORIGINAL_ID #define BUMBLEB_TELEM_DEBUG #define BUMBLEB_PACKET_PERIOD 10200 #define BUMBLEB_RF_BIND_CHANNEL 42 #define BUMBLEB_RF_NUM_CHANNELS 2 #define BUMBLEB_PAYLOAD_SIZE 7 static void __attribute__((unused)) BUMBLEB_send_packet() { packet[6] = 0x00; if(IS_BIND_IN_PROGRESS) { packet[0] = rx_tx_addr[0]; packet[1] = rx_tx_addr[1]; packet[2] = 0x54; //??? packet[3] = 0x58; //??? hopping_frequency_no ^= 0x01; packet[4] = hopping_frequency[hopping_frequency_no]; } else { //hopping frequency XN297_Hopping(hopping_frequency_no); hopping_frequency_no ^= 0x01; packet[0] = 0x20 |GET_FLAG(CH6_SW,0x80); // High rate packet[1] = convert_channel_8b_limit_deadband(AILERON,0xBF,0xA0,0x81,40); // Aileron: Max values:BD..A0..82 if(packet[1] < 0xA0) packet[1] = 0x20 - packet[1]; // Reverse low part of aileron packet[2] = convert_channel_8b(CH5)>>2; // 01..20..3F if(CH7_SW) // Drive trim from aileron { uint8_t ch=convert_channel_8b(AILERON); if(ch > 0x5A && ch < 0x80-0x07) packet[2] = ch - 0x5A; else if(ch < 0x5A) { if(ch < 0x5A-0x20) packet[2] = 0; else packet[2] = ch - (0x5A-0x20); } else if(packet[1] == 0x89) packet[2] = 0x20; else if(ch > 0xA5) { if(ch > 0xA9+0x1F) packet[2] = 0x3F; else packet[2] = ch - 0x89; } else if(ch > 0xA5-0x1F) packet[2] = ch - (0xA5-0x1F-0x20); } else packet[2] = convert_channel_8b(CH5)>>2; // 01..20..3F packet[3] = convert_channel_8b(THROTTLE)>>2; // 00..3F packet[4] = hopping_frequency[hopping_frequency_no]; } packet[5] = packet[0]; for(uint8_t i=1;i