mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-04 20:08:11 +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
|
90,1,MouldKg,Digit,0
|
||||||
91,0,Xerall,Tank,0,FlTa,TakLan,Rate,HLess,Photo,Video,TrimR,TrimE,TrimA
|
91,0,Xerall,Tank,0,FlTa,TakLan,Rate,HLess,Photo,Video,TrimR,TrimE,TrimA
|
||||||
92,0,MT99xx2,PA18,0,MODE,FLIP,RTH
|
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
|
89,Losi
|
||||||
90,MouldKg,Analog,Digit
|
90,MouldKg,Analog,Digit
|
||||||
91,Xerall
|
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_PROPEL[] ="Propel";
|
||||||
const char STR_SKYARTEC[] ="Skyartc";
|
const char STR_SKYARTEC[] ="Skyartc";
|
||||||
const char STR_KYOSHO[] ="Kyosho";
|
const char STR_KYOSHO[] ="Kyosho";
|
||||||
|
const char STR_KYOSHO2[] ="Kyosho2";
|
||||||
const char STR_RLINK[] ="RadLink";
|
const char STR_RLINK[] ="RadLink";
|
||||||
const char STR_REALACC[] ="Realacc";
|
const char STR_REALACC[] ="Realacc";
|
||||||
const char STR_OMP[] ="OMP";
|
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_RLINK[] = "\x07""Surface""Air\0 ""DumboRC";
|
||||||
const char STR_SUBTYPE_REALACC[] = "\x03""R11";
|
const char STR_SUBTYPE_REALACC[] = "\x03""R11";
|
||||||
const char STR_SUBTYPE_KYOSHO[] = "\x04""FHSS""Hype";
|
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_FUTABA[] = "\x05""SFHSS";
|
||||||
const char STR_SUBTYPE_JJRC345[] = "\x08""JJRC345\0""SkyTmblr";
|
const char STR_SUBTYPE_JJRC345[] = "\x08""JJRC345\0""SkyTmblr";
|
||||||
const char STR_SUBTYPE_MOULKG[] = "\x06""Analog""Digit\0";
|
const char STR_SUBTYPE_MOULKG[] = "\x06""Analog""Digit\0";
|
||||||
@ -358,6 +360,9 @@ const mm_protocol_definition multi_protocols[] = {
|
|||||||
#if defined(KYOSHO_A7105_INO)
|
#if defined(KYOSHO_A7105_INO)
|
||||||
{PROTO_KYOSHO, STR_KYOSHO, STR_SUBTYPE_KYOSHO, 2, OPTION_NONE, 0, 1, SW_A7105, KYOSHO_init, KYOSHO_callback },
|
{PROTO_KYOSHO, STR_KYOSHO, STR_SUBTYPE_KYOSHO, 2, OPTION_NONE, 0, 1, SW_A7105, KYOSHO_init, KYOSHO_callback },
|
||||||
#endif
|
#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)
|
#if defined(LOLI_NRF24L01_INO)
|
||||||
{PROTO_LOLI, STR_LOLI, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_NRF, LOLI_init, LOLI_callback },
|
{PROTO_LOLI, STR_LOLI, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_NRF, LOLI_init, LOLI_callback },
|
||||||
#endif
|
#endif
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#define VERSION_MAJOR 1
|
#define VERSION_MAJOR 1
|
||||||
#define VERSION_MINOR 3
|
#define VERSION_MINOR 3
|
||||||
#define VERSION_REVISION 3
|
#define VERSION_REVISION 3
|
||||||
#define VERSION_PATCH_LEVEL 18
|
#define VERSION_PATCH_LEVEL 19
|
||||||
|
|
||||||
#define MODE_SERIAL 0
|
#define MODE_SERIAL 0
|
||||||
|
|
||||||
@ -120,6 +120,7 @@ enum PROTOCOLS
|
|||||||
PROTO_MOULDKG = 90, // =>NRF24L01
|
PROTO_MOULDKG = 90, // =>NRF24L01
|
||||||
PROTO_XERALL = 91, // =>NRF24L01
|
PROTO_XERALL = 91, // =>NRF24L01
|
||||||
PROTO_MT99XX2 = 92, // =>NRF24L01, extension of MT99XX protocol
|
PROTO_MT99XX2 = 92, // =>NRF24L01, extension of MT99XX protocol
|
||||||
|
PROTO_KYOSHO2 = 93, // =>NRF24L01
|
||||||
|
|
||||||
PROTO_NANORF = 126, // =>NRF24L01
|
PROTO_NANORF = 126, // =>NRF24L01
|
||||||
PROTO_TEST = 127, // =>CC2500
|
PROTO_TEST = 127, // =>CC2500
|
||||||
|
@ -242,16 +242,16 @@
|
|||||||
|
|
||||||
//Make sure protocols are selected correctly
|
//Make sure protocols are selected correctly
|
||||||
#ifndef A7105_INSTALLED
|
#ifndef A7105_INSTALLED
|
||||||
#undef AFHDS2A_A7105_INO
|
#undef AFHDS2A_A7105_INO
|
||||||
#undef AFHDS2A_RX_A7105_INO
|
#undef AFHDS2A_RX_A7105_INO
|
||||||
#undef BUGS_A7105_INO
|
#undef BUGS_A7105_INO
|
||||||
#undef FLYSKY_A7105_INO
|
#undef FLYSKY_A7105_INO
|
||||||
#undef HEIGHT_A7105_INO
|
#undef HEIGHT_A7105_INO
|
||||||
#undef HUBSAN_A7105_INO
|
#undef HUBSAN_A7105_INO
|
||||||
#undef JOYSWAY_A7105_INO
|
#undef JOYSWAY_A7105_INO
|
||||||
#undef KYOSHO_A7105_INO
|
#undef KYOSHO_A7105_INO
|
||||||
#undef PELIKAN_A7105_INO
|
#undef PELIKAN_A7105_INO
|
||||||
#undef WFLY2_A7105_INO
|
#undef WFLY2_A7105_INO
|
||||||
#endif
|
#endif
|
||||||
#ifndef CYRF6936_INSTALLED
|
#ifndef CYRF6936_INSTALLED
|
||||||
#undef DEVO_CYRF6936_INO
|
#undef DEVO_CYRF6936_INO
|
||||||
@ -307,6 +307,7 @@
|
|||||||
#undef HONTAI_NRF24L01_INO
|
#undef HONTAI_NRF24L01_INO
|
||||||
#undef JJRC345_NRF24L01_INO
|
#undef JJRC345_NRF24L01_INO
|
||||||
#undef KN_NRF24L01_INO
|
#undef KN_NRF24L01_INO
|
||||||
|
#undef KYOSHO2_NRF24L01_INO
|
||||||
#undef LOLI_NRF24L01_INO
|
#undef LOLI_NRF24L01_INO
|
||||||
#undef MOULDKG_NRF24L01_INO
|
#undef MOULDKG_NRF24L01_INO
|
||||||
#undef NCC1701_NRF24L01_INO
|
#undef NCC1701_NRF24L01_INO
|
||||||
|
@ -237,6 +237,7 @@
|
|||||||
#define H8_3D_NRF24L01_INO
|
#define H8_3D_NRF24L01_INO
|
||||||
#define JJRC345_NRF24L01_INO
|
#define JJRC345_NRF24L01_INO
|
||||||
#define KN_NRF24L01_INO
|
#define KN_NRF24L01_INO
|
||||||
|
#define KYOSHO2_NRF24L01_INO
|
||||||
#define LOLI_NRF24L01_INO
|
#define LOLI_NRF24L01_INO
|
||||||
//#define MOULDKG_NRF24L01_INO
|
//#define MOULDKG_NRF24L01_INO
|
||||||
#define NCC1701_NRF24L01_INO
|
#define NCC1701_NRF24L01_INO
|
||||||
@ -722,6 +723,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
PROTO_KYOSHO
|
PROTO_KYOSHO
|
||||||
KYOSHO_FHSS
|
KYOSHO_FHSS
|
||||||
KYOSHO_HYPE
|
KYOSHO_HYPE
|
||||||
|
PROTO_KYOSHO2
|
||||||
|
NONE
|
||||||
PROTO_LOLI
|
PROTO_LOLI
|
||||||
NONE
|
NONE
|
||||||
PROTO_LOSI
|
PROTO_LOSI
|
||||||
|
@ -113,6 +113,7 @@ CFlie|38|CFlie||||||||NRF24L01|
|
|||||||
[KF606](Protocols_Details.md#KF606---49)|49|KF606|MIG320|||||||NRF24L01|XN297
|
[KF606](Protocols_Details.md#KF606---49)|49|KF606|MIG320|||||||NRF24L01|XN297
|
||||||
[KN](Protocols_Details.md#KN---9)|9|WLTOYS|FEILUN|||||||NRF24L01|
|
[KN](Protocols_Details.md#KN---9)|9|WLTOYS|FEILUN|||||||NRF24L01|
|
||||||
[Kyosho](Protocols_Details.md#Kyosho---73)|73|FHSS|Hype|||||||A7105|
|
[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|
|
[LOLI](Protocols_Details.md#LOLI---82)|82|||||||||NRF24L01|
|
||||||
[Losi](Protocols_Details.md#Losi---89)|89|||||||||CYRF6936|
|
[Losi](Protocols_Details.md#Losi---89)|89|||||||||CYRF6936|
|
||||||
[MJXq](Protocols_Details.md#MJXQ---18)|18|WLH08|X600|X800|H26D|E010*|H26WH|PHOENIX*||NRF24L01|XN297
|
[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
|
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*
|
## LOLI - *82*
|
||||||
LOLI3 receivers: https://github.com/wooddoor/Loli3
|
LOLI3 receivers: https://github.com/wooddoor/Loli3
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user