From af88abb13fb63cc2cc399b4bd3b72d4747b7a7cf Mon Sep 17 00:00:00 2001 From: pascallanger Date: Mon, 20 Nov 2017 15:53:00 +0100 Subject: [PATCH] Delete FrSkyX_cc2500.ino --- Multiprotocol/FrSkyX_cc2500.ino | 286 -------------------------------- 1 file changed, 286 deletions(-) delete mode 100644 Multiprotocol/FrSkyX_cc2500.ino diff --git a/Multiprotocol/FrSkyX_cc2500.ino b/Multiprotocol/FrSkyX_cc2500.ino deleted file mode 100644 index 84594b4..0000000 --- a/Multiprotocol/FrSkyX_cc2500.ino +++ /dev/null @@ -1,286 +0,0 @@ - -/* ************************** - * By Midelic on RCGroups * - ************************** - 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(FRSKYX_CC2500_INO) - -#include "iface_cc2500.h" - -uint8_t chanskip; -uint8_t seq_last_sent; -uint8_t seq_last_rcvd; - -static void __attribute__((unused)) set_start(uint8_t ch ) -{ - CC2500_Strobe(CC2500_SIDLE); - CC2500_WriteReg(CC2500_25_FSCAL1, calData[ch]); - CC2500_WriteReg(CC2500_0A_CHANNR, hopping_frequency[ch]); -} - -static void __attribute__((unused)) frskyX_init() -{ - FRSKY_init_cc2500((sub_protocol&2)?FRSKYXEU_cc2500_conf:FRSKYX_cc2500_conf); // LBT or FCC - // - for(uint8_t c=0;c < 48;c++) - {//calibrate hop channels - CC2500_Strobe(CC2500_SIDLE); - CC2500_WriteReg(CC2500_0A_CHANNR,hopping_frequency[c]); - CC2500_Strobe(CC2500_SCAL); - delayMicroseconds(900);// - calData[c] = CC2500_ReadReg(CC2500_25_FSCAL1); - } - //#######END INIT######## -} - -static void __attribute__((unused)) initialize_data(uint8_t adr) -{ - CC2500_WriteReg(CC2500_0C_FSCTRL0,option); // Frequency offset hack - CC2500_WriteReg(CC2500_18_MCSM0, 0x8); - CC2500_WriteReg(CC2500_09_ADDR, adr ? 0x03 : rx_tx_addr[3]); - CC2500_WriteReg(CC2500_07_PKTCTRL1,0x05); -} - -//**CRC** -const uint16_t PROGMEM CRC_Short[]={ - 0x0000, 0x1189, 0x2312, 0x329B, 0x4624, 0x57AD, 0x6536, 0x74BF, - 0x8C48, 0x9DC1, 0xAF5A, 0xBED3, 0xCA6C, 0xDBE5, 0xE97E, 0xF8F7 }; -static uint16_t CRCTable(uint8_t val) -{ - uint16_t word ; - word = pgm_read_word(&CRC_Short[val&0x0F]) ; - val /= 16 ; - return word ^ (0x1081 * val) ; -} -static uint16_t __attribute__((unused)) crc_x(uint8_t *data, uint8_t len) -{ - uint16_t crc = 0; - for(uint8_t i=0; i < len; i++) - crc = (crc<<8) ^ CRCTable((uint8_t)(crc>>8) ^ *data++); - return crc; -} - - // 0-2047, 0 = 817, 1024 = 1500, 2047 = 2182 - //64=860,1024=1500,1984=2140//Taranis 125% - -static uint16_t __attribute__((unused)) scaleForPXX( uint8_t i ) -{ //mapped 860,2140(125%) range to 64,1984(PXX values); - return (uint16_t)(((Servo_data[i]-servo_min_125)*3)>>1)+64; -} - -static void __attribute__((unused)) frskyX_build_bind_packet() -{ - packet[0] = (sub_protocol & 2 ) ? 0x20 : 0x1D ; // LBT or FCC - packet[1] = 0x03; - packet[2] = 0x01; - // - packet[3] = rx_tx_addr[3]; - packet[4] = rx_tx_addr[2]; - int idx = ((state -FRSKY_BIND) % 10) * 5; - packet[5] = idx; - packet[6] = hopping_frequency[idx++]; - packet[7] = hopping_frequency[idx++]; - packet[8] = hopping_frequency[idx++]; - packet[9] = hopping_frequency[idx++]; - packet[10] = hopping_frequency[idx++]; - packet[11] = 0x02; - packet[12] = RX_num; - // - uint8_t limit = (sub_protocol & 2 ) ? 31 : 28 ; - memset(&packet[13], 0, limit - 13); - uint16_t lcrc = crc_x(&packet[3], limit-3); - // - packet[limit++] = lcrc >> 8; - packet[limit] = lcrc; - // -} - -static void __attribute__((unused)) frskyX_data_frame() -{ - //0x1D 0xB3 0xFD 0x02 0x56 0x07 0x15 0x00 0x00 0x00 0x04 0x40 0x00 0x04 0x40 0x00 0x04 0x40 0x00 0x04 0x40 0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x96 0x12 - // - static uint8_t lpass; - uint16_t chan_0 ; - uint16_t chan_1 ; - uint8_t startChan = 0; - // - packet[0] = (sub_protocol & 2 ) ? 0x20 : 0x1D ; // LBT or FCC - packet[1] = rx_tx_addr[3]; - packet[2] = rx_tx_addr[2]; - packet[3] = 0x02; - // - packet[4] = (chanskip<<6)|hopping_frequency_no; - packet[5] = chanskip>>2; - packet[6] = RX_num; - //packet[7] = FLAGS 00 - standard packet - //10, 12, 14, 16, 18, 1A, 1C, 1E - failsafe packet - //20 - range check packet - packet[7] = 0; - packet[8] = 0; - // - if ( lpass & 1 ) - startChan += 8 ; - - for(uint8_t i = 0; i <12 ; i+=3) - {//12 bytes - chan_0 = scaleForPXX(startChan); - if(lpass & 1 ) - chan_0+=2048; - startChan+=1; - // - chan_1 = scaleForPXX(startChan); - if(lpass & 1 ) - chan_1+= 2048; - startChan+=1; - // - packet[9+i] = lowByte(chan_0);//3 bytes*4 - packet[9+i+1]=(((chan_0>>8) & 0x0F)|(chan_1 << 4)); - packet[9+i+2]=chan_1>>4; - } - - packet[21] = seq_last_sent << 4 | seq_last_rcvd;//8 at start - if (seq_last_sent < 0x08 && seq_last_rcvd < 8) - seq_last_sent = (seq_last_sent + 1) % 4; - else if (seq_last_rcvd == 0x00) - seq_last_sent = 1; - else - seq_last_rcvd = 8; - - if(sub_protocol & 1 )// in X8 mode send only 8ch every 9ms - lpass = 0 ; - else - lpass += 1 ; - - uint8_t limit = (sub_protocol & 2 ) ? 31 : 28 ; - for (uint8_t i=22;i>8;//high byte - packet[limit]=lcrc;//low byte -} - -uint16_t ReadFrSkyX() -{ - switch(state) - { - default: - set_start(47); - CC2500_SetPower(); - CC2500_Strobe(CC2500_SFRX); - // - frskyX_build_bind_packet(); - CC2500_Strobe(CC2500_SIDLE); - CC2500_WriteData(packet, packet[0]+1); - if(IS_BIND_DONE_on) - state = FRSKY_BIND_DONE; - else - state++; - return 9000; - case FRSKY_BIND_DONE: - initialize_data(0); - hopping_frequency_no=0; - BIND_DONE; - state++; - break; - case FRSKY_DATA1: - if ( prev_option != option ) - { - CC2500_WriteReg(CC2500_0C_FSCTRL0,option); // Frequency offset hack - prev_option = option ; - } - CC2500_SetTxRxMode(TX_EN); - set_start(hopping_frequency_no); - CC2500_SetPower(); - CC2500_Strobe(CC2500_SFRX); - hopping_frequency_no = (hopping_frequency_no+chanskip)%47; - CC2500_Strobe(CC2500_SIDLE); - CC2500_WriteData(packet, packet[0]+1); - // - frskyX_data_frame(); - state++; - return 5500; - case FRSKY_DATA2: - CC2500_SetTxRxMode(RX_EN); - CC2500_Strobe(CC2500_SIDLE); - state++; - return 200; - case FRSKY_DATA3: - CC2500_Strobe(CC2500_SRX); - state++; - return 3000; - case FRSKY_DATA4: - len = CC2500_ReadReg(CC2500_3B_RXBYTES | CC2500_READ_BURST) & 0x7F; - if (len && (len<=(0x0E + 3))) //Telemetry frame is 17 - { - packet_count=0; - CC2500_ReadData(pkt, len); - #if defined TELEMETRY - frsky_check_telemetry(pkt,len); //check if valid telemetry packets - //parse telemetry packets here - //The same telemetry function used by FrSky(D8). - #endif - } - else - { - packet_count++; - // restart sequence on missed packet - might need count or timeout instead of one missed - if(packet_count>100) - {//~1sec - seq_last_sent = 0; - seq_last_rcvd = 8; - packet_count=0; - #if defined TELEMETRY - telemetry_lost=1; - #endif - } - CC2500_Strobe(CC2500_SFRX); //flush the RXFIFO - } - state = FRSKY_DATA1; - return 300; - } - return 1; -} - -uint16_t initFrSkyX() -{ - set_rx_tx_addr(MProtocol_id_master); - Frsky_init_hop(); - packet_count=0; - while(!chanskip) - chanskip=random(0xfefefefe)%47; - - //for test*************** - //rx_tx_addr[3]=0xB3; - //rx_tx_addr[2]=0xFD; - //************************ - frskyX_init(); - // - if(IS_AUTOBIND_FLAG_on) - { - state = FRSKY_BIND; - initialize_data(1); - } - else - { - state = FRSKY_DATA1; - initialize_data(0); - } - seq_last_sent = 0; - seq_last_rcvd = 8; - return 10000; -} -#endif \ No newline at end of file