mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-04 16:48:10 +00:00
Kyosho2/KT-17: only 1 ID
This commit is contained in:
parent
ce6243d6e3
commit
bfc8c2f9fd
@ -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
|
||||
|
137
Multiprotocol/Kyosho2_nrf24l01.ino
Normal file
137
Multiprotocol/Kyosho2_nrf24l01.ino
Normal file
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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;i<KYOSHO2_PAYLOAD_SIZE;i++)
|
||||
debug("%02X ", packet[i]);
|
||||
debugln("");
|
||||
#endif
|
||||
}
|
||||
|
||||
static void __attribute__((unused)) KYOSHO2_RF_init()
|
||||
{
|
||||
NRF24L01_Initialize();
|
||||
NRF24L01_WriteReg(NRF24L01_05_RF_CH, KYOSHO2_BIND_CHANNEL);
|
||||
NRF24L01_WriteRegisterMulti(NRF24L01_10_TX_ADDR, (uint8_t*)"\x69\x53\x10\xAC\xEF", 5);
|
||||
}
|
||||
|
||||
static void __attribute__((unused)) KYOSHO2_initialize_tx_id()
|
||||
{
|
||||
hopping_frequency_no = rx_tx_addr[3]%KYOSHO2_RF_CHANNELS;
|
||||
hopping_frequency[0] = 0x4A;
|
||||
#ifdef FORCE_KYOSHO2_ID
|
||||
memcpy(rx_tx_addr, (uint8_t*)"\x0A\xBD\x31\xDF", 4);
|
||||
hopping_frequency[0] = 0x4A; // No idea where it comes from... ID or unknown bytes during the bind?
|
||||
#endif
|
||||
for(uint8_t i=1;i<KYOSHO2_RF_CHANNELS;i++)
|
||||
{
|
||||
if(hopping_frequency[i-1]+5 < 0x50)
|
||||
hopping_frequency[i] = hopping_frequency[i-1]+5;
|
||||
else
|
||||
hopping_frequency[i] = hopping_frequency[i-1]-0x21;
|
||||
}
|
||||
#if 0
|
||||
for(uint8_t i=0;i<KYOSHO2_RF_CHANNELS;i++)
|
||||
debugln("1:%02X, 2: %02X", i + KYOSHO2_START_RF_CHANNEL, hopping_frequency[i]);
|
||||
debugln("Selected 1:%02X, 2: %02X", hopping_frequency_no + KYOSHO2_START_RF_CHANNEL, hopping_frequency[hopping_frequency_no]);
|
||||
#endif
|
||||
}
|
||||
|
||||
uint16_t KYOSHO2_callback()
|
||||
{
|
||||
#ifdef MULTI_SYNC
|
||||
telemetry_set_input_sync(KYOSHO2_PACKET_PERIOD);
|
||||
#endif
|
||||
if(bind_counter)
|
||||
if(--bind_counter==0)
|
||||
{
|
||||
BIND_DONE;
|
||||
KYOSHO2_resend = false;
|
||||
}
|
||||
KYOSHO2_send_packet();
|
||||
return KYOSHO2_PACKET_PERIOD;
|
||||
}
|
||||
|
||||
void KYOSHO2_init()
|
||||
{
|
||||
KYOSHO2_initialize_tx_id();
|
||||
KYOSHO2_RF_init();
|
||||
rf_ch_num = 0;
|
||||
|
||||
if(IS_BIND_IN_PROGRESS)
|
||||
bind_counter = KYOSHO2_BIND_COUNT;
|
||||
else
|
||||
bind_counter = 0;
|
||||
KYOSHO2_resend = false;
|
||||
}
|
||||
|
||||
#endif
|
@ -88,4 +88,5 @@
|
||||
89,Losi
|
||||
90,MouldKg,Analog,Digit
|
||||
91,Xerall
|
||||
92,MT99xx,PA18
|
||||
92,MT99xx,PA18
|
||||
93,Kyosho2,KT-17
|
@ -88,6 +88,7 @@ const char STR_FRSKYR9[] ="FrSkyR9";
|
||||
const char STR_PROPEL[] ="Propel";
|
||||
const char STR_SKYARTEC[] ="Skyartc";
|
||||
const char STR_KYOSHO[] ="Kyosho";
|
||||
const char STR_KYOSHO2[] ="Kyosho2";
|
||||
const char STR_RLINK[] ="RadLink";
|
||||
const char STR_REALACC[] ="Realacc";
|
||||
const char STR_OMP[] ="OMP";
|
||||
@ -158,6 +159,7 @@ const char STR_SUBTYPE_V761[] = "\x03""3ch""4ch";
|
||||
const char STR_SUBTYPE_RLINK[] = "\x07""Surface""Air\0 ""DumboRC";
|
||||
const char STR_SUBTYPE_REALACC[] = "\x03""R11";
|
||||
const char STR_SUBTYPE_KYOSHO[] = "\x04""FHSS""Hype";
|
||||
const char STR_SUBTYPE_KYOSHO2[] = "\x05""KT-17";
|
||||
const char STR_SUBTYPE_FUTABA[] = "\x05""SFHSS";
|
||||
const char STR_SUBTYPE_JJRC345[] = "\x08""JJRC345\0""SkyTmblr";
|
||||
const char STR_SUBTYPE_MOULKG[] = "\x06""Analog""Digit\0";
|
||||
@ -358,6 +360,9 @@ const mm_protocol_definition multi_protocols[] = {
|
||||
#if defined(KYOSHO_A7105_INO)
|
||||
{PROTO_KYOSHO, STR_KYOSHO, STR_SUBTYPE_KYOSHO, 2, OPTION_NONE, 0, 1, SW_A7105, KYOSHO_init, KYOSHO_callback },
|
||||
#endif
|
||||
#if defined(KYOSHO2_NRF24L01_INO)
|
||||
{PROTO_KYOSHO2, STR_KYOSHO2, STR_SUBTYPE_KYOSHO2, 1, OPTION_NONE, 0, 0, SW_NRF, KYOSHO2_init, KYOSHO2_callback },
|
||||
#endif
|
||||
#if defined(LOLI_NRF24L01_INO)
|
||||
{PROTO_LOLI, STR_LOLI, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_NRF, LOLI_init, LOLI_callback },
|
||||
#endif
|
||||
|
@ -19,7 +19,7 @@
|
||||
#define VERSION_MAJOR 1
|
||||
#define VERSION_MINOR 3
|
||||
#define VERSION_REVISION 3
|
||||
#define VERSION_PATCH_LEVEL 18
|
||||
#define VERSION_PATCH_LEVEL 19
|
||||
|
||||
#define MODE_SERIAL 0
|
||||
|
||||
@ -120,6 +120,7 @@ enum PROTOCOLS
|
||||
PROTO_MOULDKG = 90, // =>NRF24L01
|
||||
PROTO_XERALL = 91, // =>NRF24L01
|
||||
PROTO_MT99XX2 = 92, // =>NRF24L01, extension of MT99XX protocol
|
||||
PROTO_KYOSHO2 = 93, // =>NRF24L01
|
||||
|
||||
PROTO_NANORF = 126, // =>NRF24L01
|
||||
PROTO_TEST = 127, // =>CC2500
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user