From bfc8c2f9fd03b055f6e149fef2f4216fa0fc81f5 Mon Sep 17 00:00:00 2001 From: pascallanger Date: Wed, 20 Jul 2022 17:20:27 +0200 Subject: [PATCH] Kyosho2/KT-17: only 1 ID --- Lua_scripts/MultiChan.txt | 1 + Multiprotocol/Kyosho2_nrf24l01.ino | 137 +++++++++++++++++++++++++++++ Multiprotocol/Multi.txt | 3 +- Multiprotocol/Multi_Protos.ino | 5 ++ Multiprotocol/Multiprotocol.h | 3 +- Multiprotocol/Validate.h | 21 ++--- Multiprotocol/_Config.h | 3 + Protocols_Details.md | 8 ++ 8 files changed, 169 insertions(+), 12 deletions(-) create mode 100644 Multiprotocol/Kyosho2_nrf24l01.ino diff --git a/Lua_scripts/MultiChan.txt b/Lua_scripts/MultiChan.txt index 8f29dce..c3baece 100644 --- a/Lua_scripts/MultiChan.txt +++ b/Lua_scripts/MultiChan.txt @@ -204,3 +204,4 @@ 90,1,MouldKg,Digit,0 91,0,Xerall,Tank,0,FlTa,TakLan,Rate,HLess,Photo,Video,TrimR,TrimE,TrimA 92,0,MT99xx2,PA18,0,MODE,FLIP,RTH +93,0,Kyosho2,KT-17,0 diff --git a/Multiprotocol/Kyosho2_nrf24l01.ino b/Multiprotocol/Kyosho2_nrf24l01.ino new file mode 100644 index 0000000..fd9c2bc --- /dev/null +++ b/Multiprotocol/Kyosho2_nrf24l01.ino @@ -0,0 +1,137 @@ +/* + 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(KYOSHO2_NRF24L01_INO) + +#include "iface_nrf24l01.h" + +#define KYOSHO2_PACKET_PERIOD 1120 // 1600 for bind, let's see +#define KYOSHO2_BIND_COUNT 2000 // about 3sec +#define KYOSHO2_BIND_CHANNEL 0x50 +#define KYOSHO2_PAYLOAD_SIZE 28 +#define KYOSHO2_RF_CHANNELS 15 +#define KYOSHO2_START_RF_CHANNEL 0x13 // No idea where it comes from... ID or unknown bytes during the bind? +#define KYOSHO2_NUM_CHANNEL 10 // Only 4 on the dumps but there is space for 10 channels in the payload... + +#define FORCE_KYOSHO2_ID + +bool KYOSHO2_resend; +// +static void __attribute__((unused)) KYOSHO2_send_packet() +{ + if(KYOSHO2_resend == true) + { + NRF24L01_Strobe(NRF24L01_E3_REUSE_TX_PL); + if(IS_BIND_DONE) + KYOSHO2_resend = false; + return; + } + + memset(packet,0x00,KYOSHO2_PAYLOAD_SIZE); + + if(IS_BIND_IN_PROGRESS) + { + memcpy(packet, (uint8_t*)"\x01\x02\x05\x08\x1A\x2B\x3C\x4D", 8); // unknown bytes, parameters on how to build the rf channels? + memcpy(&packet[8], rx_tx_addr, 4); + } + else + { + memcpy(packet, rx_tx_addr, 4); + //Hopp + packet[6] = hopping_frequency_no + KYOSHO2_START_RF_CHANNEL; + packet[7] = hopping_frequency[hopping_frequency_no]; + NRF24L01_WriteReg(NRF24L01_05_RF_CH, packet[6+(rf_ch_num&0x01)]); + rf_ch_num++; + //Channels + uint16_t temp; + for (uint8_t i = 0; i< KYOSHO2_NUM_CHANNEL; i++) + { + temp=convert_channel_16b_limit(i,0,0x3FF); + packet[8+i*2] = temp >> 8; + packet[9+i*2] = temp; + } + } + //Send + NRF24L01_WriteReg(NRF24L01_07_STATUS, (_BV(NRF24L01_07_TX_DS) | _BV(NRF24L01_07_MAX_RT))); // Reset flags + NRF24L01_FlushTx(); + NRF24L01_WritePayload(packet,KYOSHO2_PAYLOAD_SIZE); + NRF24L01_SetPower(); + KYOSHO2_resend = true; + + #if 0 + for(uint8_t i=0;iNRF24L01 PROTO_XERALL = 91, // =>NRF24L01 PROTO_MT99XX2 = 92, // =>NRF24L01, extension of MT99XX protocol + PROTO_KYOSHO2 = 93, // =>NRF24L01 PROTO_NANORF = 126, // =>NRF24L01 PROTO_TEST = 127, // =>CC2500 diff --git a/Multiprotocol/Validate.h b/Multiprotocol/Validate.h index 1cee078..8e56e38 100644 --- a/Multiprotocol/Validate.h +++ b/Multiprotocol/Validate.h @@ -242,16 +242,16 @@ //Make sure protocols are selected correctly #ifndef A7105_INSTALLED - #undef AFHDS2A_A7105_INO - #undef AFHDS2A_RX_A7105_INO - #undef BUGS_A7105_INO - #undef FLYSKY_A7105_INO - #undef HEIGHT_A7105_INO - #undef HUBSAN_A7105_INO - #undef JOYSWAY_A7105_INO - #undef KYOSHO_A7105_INO - #undef PELIKAN_A7105_INO - #undef WFLY2_A7105_INO + #undef AFHDS2A_A7105_INO + #undef AFHDS2A_RX_A7105_INO + #undef BUGS_A7105_INO + #undef FLYSKY_A7105_INO + #undef HEIGHT_A7105_INO + #undef HUBSAN_A7105_INO + #undef JOYSWAY_A7105_INO + #undef KYOSHO_A7105_INO + #undef PELIKAN_A7105_INO + #undef WFLY2_A7105_INO #endif #ifndef CYRF6936_INSTALLED #undef DEVO_CYRF6936_INO @@ -307,6 +307,7 @@ #undef HONTAI_NRF24L01_INO #undef JJRC345_NRF24L01_INO #undef KN_NRF24L01_INO + #undef KYOSHO2_NRF24L01_INO #undef LOLI_NRF24L01_INO #undef MOULDKG_NRF24L01_INO #undef NCC1701_NRF24L01_INO diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h index 9200981..c64a023 100644 --- a/Multiprotocol/_Config.h +++ b/Multiprotocol/_Config.h @@ -237,6 +237,7 @@ #define H8_3D_NRF24L01_INO #define JJRC345_NRF24L01_INO #define KN_NRF24L01_INO +#define KYOSHO2_NRF24L01_INO #define LOLI_NRF24L01_INO //#define MOULDKG_NRF24L01_INO #define NCC1701_NRF24L01_INO @@ -722,6 +723,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= { PROTO_KYOSHO KYOSHO_FHSS KYOSHO_HYPE + PROTO_KYOSHO2 + NONE PROTO_LOLI NONE PROTO_LOSI diff --git a/Protocols_Details.md b/Protocols_Details.md index 0d33631..21b836e 100644 --- a/Protocols_Details.md +++ b/Protocols_Details.md @@ -113,6 +113,7 @@ CFlie|38|CFlie||||||||NRF24L01| [KF606](Protocols_Details.md#KF606---49)|49|KF606|MIG320|||||||NRF24L01|XN297 [KN](Protocols_Details.md#KN---9)|9|WLTOYS|FEILUN|||||||NRF24L01| [Kyosho](Protocols_Details.md#Kyosho---73)|73|FHSS|Hype|||||||A7105| +[Kyosho2](Protocols_Details.md#Kyosho2---93)|93|KT-17||||||||NRF24L01| [LOLI](Protocols_Details.md#LOLI---82)|82|||||||||NRF24L01| [Losi](Protocols_Details.md#Losi---89)|89|||||||||CYRF6936| [MJXq](Protocols_Details.md#MJXQ---18)|18|WLH08|X600|X800|H26D|E010*|H26WH|PHOENIX*||NRF24L01|XN297 @@ -1731,6 +1732,13 @@ Model: DF-Models SkyTumbler RTH not supported +## KYOSHO2 - *93* +Model: TX KT-17, Minium Edge 540, Minium Citabria + +CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10 +---|---|---|---|---|---|---|---|---|---- +CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10 + ## LOLI - *82* LOLI3 receivers: https://github.com/wooddoor/Loli3