mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-04 22:28:12 +00:00
Kyosho Syncro
Sub protocol Syncro for KT-331 and KR-331
This commit is contained in:
parent
457703b881
commit
a7d6d12679
@ -121,7 +121,9 @@
|
|||||||
49,2,KF606,ZCZ50,1,Trim,UNK
|
49,2,KF606,ZCZ50,1,Trim,UNK
|
||||||
9,0,KN,WLToys,0,DRate,THold,IdleUp,Gyro,Ttrim,Atrim,Etrim
|
9,0,KN,WLToys,0,DRate,THold,IdleUp,Gyro,Ttrim,Atrim,Etrim
|
||||||
9,1,KN,Feilun,0,DRate,THold,IdleUp,Gyro,Ttrim,Atrim,Etrim
|
9,1,KN,Feilun,0,DRate,THold,IdleUp,Gyro,Ttrim,Atrim,Etrim
|
||||||
73,0,Kyosho,Std,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
73,0,Kyosho,FHSS,0,CH5,CH6,CH7,CH8,CH9,CH10,CH11,CH12,CH13,CH14
|
||||||
|
73,1,Kyosho,Hype,0,CH5,CH6
|
||||||
|
73,2,Kyosho,Syncro,0,CH5,CH6
|
||||||
18,0,MJXQ,WHL08,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate
|
18,0,MJXQ,WHL08,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate
|
||||||
18,1,MJXQ,X600,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate
|
18,1,MJXQ,X600,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate
|
||||||
18,2,MJXQ,X800,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate
|
18,2,MJXQ,X800,1,Flip,LED,Pict,Video,HLess,RTH,AuFlip,Pan,Tilt,Rate
|
||||||
|
@ -418,7 +418,7 @@ void A7105_Init(void)
|
|||||||
#ifdef KYOSHO_A7105_INO
|
#ifdef KYOSHO_A7105_INO
|
||||||
if(protocol==PROTO_KYOSHO)
|
if(protocol==PROTO_KYOSHO)
|
||||||
{
|
{
|
||||||
if(sub_protocol==KYOSHO_FHSS)
|
if(sub_protocol==KYOSHO_FHSS || sub_protocol==KYOSHO_SYNCRO)
|
||||||
A7105_Regs=(uint8_t*)KYOSHO_A7105_regs;
|
A7105_Regs=(uint8_t*)KYOSHO_A7105_regs;
|
||||||
else
|
else
|
||||||
A7105_Regs=(uint8_t*)KYOSHO_HYPE_A7105_regs;
|
A7105_Regs=(uint8_t*)KYOSHO_HYPE_A7105_regs;
|
||||||
@ -446,7 +446,7 @@ void A7105_Init(void)
|
|||||||
}
|
}
|
||||||
A7105_Strobe(A7105_STANDBY);
|
A7105_Strobe(A7105_STANDBY);
|
||||||
|
|
||||||
if(protocol==PROTO_KYOSHO && sub_protocol==KYOSHO_FHSS)
|
if(protocol==PROTO_KYOSHO && (sub_protocol==KYOSHO_FHSS || sub_protocol==KYOSHO_SYNCRO))
|
||||||
{//strange calibration...
|
{//strange calibration...
|
||||||
//IF Filter Bank Calibration
|
//IF Filter Bank Calibration
|
||||||
A7105_WriteReg(A7105_02_CALC,0x0F);
|
A7105_WriteReg(A7105_02_CALC,0x0F);
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
//#define KYOSHO_FORCE_ID_FHSS
|
//#define KYOSHO_FORCE_ID_FHSS
|
||||||
//#define KYOSHO_FORCE_ID_HYPE
|
//#define KYOSHO_FORCE_ID_HYPE
|
||||||
|
//#define KYOSHO_FORCE_ID_SYNCRO
|
||||||
|
|
||||||
//Kyosho constants & variables
|
//Kyosho constants & variables
|
||||||
#define KYOSHO_BIND_COUNT 2500
|
#define KYOSHO_BIND_COUNT 2500
|
||||||
@ -33,6 +34,11 @@ static void __attribute__((unused)) KYOSHO_send_packet()
|
|||||||
//unknown may be RX ID on some other remotes
|
//unknown may be RX ID on some other remotes
|
||||||
memset(packet+5,0xFF,4);
|
memset(packet+5,0xFF,4);
|
||||||
|
|
||||||
|
//unknwon but for Syncro the same values are used for bind and normal
|
||||||
|
packet[27] = sub_protocol==KYOSHO_FHSS?0x05:0x07; // Syncro is 7
|
||||||
|
packet[28] = 0x00;
|
||||||
|
memset(packet+29,0xFF,8);
|
||||||
|
|
||||||
if(IS_BIND_IN_PROGRESS)
|
if(IS_BIND_IN_PROGRESS)
|
||||||
{
|
{
|
||||||
packet[ 0] = 0xBC; // bind indicator
|
packet[ 0] = 0xBC; // bind indicator
|
||||||
@ -42,10 +48,6 @@ static void __attribute__((unused)) KYOSHO_send_packet()
|
|||||||
//RF table
|
//RF table
|
||||||
for(uint8_t i=0; i<16;i++)
|
for(uint8_t i=0; i<16;i++)
|
||||||
packet[i+11]=hopping_frequency[i+(packet[9]<<4)];
|
packet[i+11]=hopping_frequency[i+(packet[9]<<4)];
|
||||||
//unknwon
|
|
||||||
packet[27] = 0x05;
|
|
||||||
packet[28] = 0x00;
|
|
||||||
memset(packet+29,0xFF,8);
|
|
||||||
//frequency hop during bind
|
//frequency hop during bind
|
||||||
if(packet[9])
|
if(packet[9])
|
||||||
rf_ch_num=0x8C;
|
rf_ch_num=0x8C;
|
||||||
@ -55,13 +57,20 @@ static void __attribute__((unused)) KYOSHO_send_packet()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
packet[ 0] = 0x58; // normal packet
|
packet[ 0] = 0x58; // normal packet
|
||||||
//14 channels: steering, throttle, ...
|
//FHSS 14 channels: steering, throttle, ...
|
||||||
for(uint8_t i = 0; i < 14; i++)
|
//Syncro 6 channels: steering, throttle, ...
|
||||||
|
for(uint8_t i = 0; i < sub_protocol==KYOSHO_FHSS?14:6; i++)
|
||||||
{
|
{
|
||||||
uint16_t temp=convert_channel_ppm(i);
|
uint16_t temp=convert_channel_ppm(i);
|
||||||
packet[9 + i*2]=temp&0xFF; // low byte of servo timing(1000-2000us)
|
packet[9 + i*2]=temp&0xFF; // low byte of servo timing(1000-2000us)
|
||||||
packet[10 + i*2]=(temp>>8)&0xFF; // high byte of servo timing(1000-2000us)
|
packet[10 + i*2]=(temp>>8)&0xFF; // high byte of servo timing(1000-2000us)
|
||||||
}
|
}
|
||||||
|
if(sub_protocol==KYOSHO_SYNCRO)
|
||||||
|
{
|
||||||
|
memcpy(&packet[21],&hopping_frequency[11],6);
|
||||||
|
packet[34] = 0x0F;
|
||||||
|
packet[36] = 0x0F;
|
||||||
|
}
|
||||||
rf_ch_num=hopping_frequency[hopping_frequency_no];
|
rf_ch_num=hopping_frequency[hopping_frequency_no];
|
||||||
hopping_frequency_no++;
|
hopping_frequency_no++;
|
||||||
packet[34] |= (hopping_frequency_no&0x0F)<<4;
|
packet[34] |= (hopping_frequency_no&0x0F)<<4;
|
||||||
@ -150,7 +159,7 @@ uint16_t KYOSHO_callback()
|
|||||||
telemetry_set_input_sync(packet_period);
|
telemetry_set_input_sync(packet_period);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if(sub_protocol==KYOSHO_FHSS)
|
if(sub_protocol==KYOSHO_FHSS || sub_protocol==KYOSHO_SYNCRO)
|
||||||
KYOSHO_send_packet();
|
KYOSHO_send_packet();
|
||||||
else//HYPE
|
else//HYPE
|
||||||
KYOSHO_hype_send_packet();
|
KYOSHO_hype_send_packet();
|
||||||
@ -162,7 +171,7 @@ void KYOSHO_init()
|
|||||||
A7105_Init();
|
A7105_Init();
|
||||||
|
|
||||||
// compute channels from ID
|
// compute channels from ID
|
||||||
calc_fh_channels(sub_protocol==KYOSHO_FHSS?32:15);
|
calc_fh_channels(sub_protocol==KYOSHO_HYPE?15:32);
|
||||||
hopping_frequency_no=0;
|
hopping_frequency_no=0;
|
||||||
|
|
||||||
#ifdef KYOSHO_FORCE_ID_FHSS
|
#ifdef KYOSHO_FORCE_ID_FHSS
|
||||||
@ -172,6 +181,13 @@ void KYOSHO_init()
|
|||||||
memcpy(hopping_frequency,"\x29\x4C\x67\x92\x31\x1C\x77\x18\x23\x6E\x81\x5C\x8F\x5A\x51\x94\x7A\x12\x45\x6C\x7F\x1E\x0D\x88\x63\x8C\x4F\x37\x26\x61\x2C\x8A",32);
|
memcpy(hopping_frequency,"\x29\x4C\x67\x92\x31\x1C\x77\x18\x23\x6E\x81\x5C\x8F\x5A\x51\x94\x7A\x12\x45\x6C\x7F\x1E\x0D\x88\x63\x8C\x4F\x37\x26\x61\x2C\x8A",32);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef KYOSHO_FORCE_ID_SYNCRO
|
||||||
|
if(sub_protocol==KYOSHO_SYNCRO)
|
||||||
|
{
|
||||||
|
memcpy(rx_tx_addr,"\x00\xC2\x24\x00",4);
|
||||||
|
memcpy(hopping_frequency,"\x73\x12\x7D\x88\x63\x4A\x8D\x60\x57\x16\x5D\x8B\x25\x53\x6E\x3C\x41\x70\x20\x83\x2A\x19\x94\x2F\x91\x4C\x47\x36\x78\x10\x5A\x31",32);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if(sub_protocol==KYOSHO_HYPE)
|
if(sub_protocol==KYOSHO_HYPE)
|
||||||
{
|
{
|
||||||
MProtocol_id &= 0x00FF00FF;
|
MProtocol_id &= 0x00FF00FF;
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
70,DSM_RX,Multi,CloneTX,EraseTX,CPPM
|
70,DSM_RX,Multi,CloneTX,EraseTX,CPPM
|
||||||
71,JJRC345,JJRC345,SkyTmblr
|
71,JJRC345,JJRC345,SkyTmblr
|
||||||
72,Q90C
|
72,Q90C
|
||||||
73,Kyosho,FHSS,Hype
|
73,Kyosho,FHSS,Hype,Syncro
|
||||||
74,RadioLink,Surface,Air,DumboRC
|
74,RadioLink,Surface,Air,DumboRC
|
||||||
75,---
|
75,---
|
||||||
76,Realacc,R11
|
76,Realacc,R11
|
||||||
|
@ -169,7 +169,7 @@ const char STR_SUBTYPE_PELIKAN[] = "\x05""Pro\0 ""Lite\0""SCX24";
|
|||||||
const char STR_SUBTYPE_V761[] = "\x05""3ch\0 ""4ch\0 ""TOPRC";
|
const char STR_SUBTYPE_V761[] = "\x05""3ch\0 ""4ch\0 ""TOPRC";
|
||||||
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[] = "\x06""FHSS""Hype""Sync";
|
||||||
const char STR_SUBTYPE_KYOSHO2[] = "\x05""KT-17";
|
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";
|
||||||
@ -379,7 +379,7 @@ const mm_protocol_definition multi_protocols[] = {
|
|||||||
{PROTO_KN, STR_KN, STR_SUBTYPE_KN, 2, OPTION_NONE, 0, 0, SW_NRF, KN_init, KN_callback },
|
{PROTO_KN, STR_KN, STR_SUBTYPE_KN, 2, OPTION_NONE, 0, 0, SW_NRF, KN_init, KN_callback },
|
||||||
#endif
|
#endif
|
||||||
#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, 3, OPTION_NONE, 0, 1, SW_A7105, KYOSHO_init, KYOSHO_callback },
|
||||||
#endif
|
#endif
|
||||||
#if defined(KYOSHO2_NRF24L01_INO)
|
#if defined(KYOSHO2_NRF24L01_INO)
|
||||||
{PROTO_KYOSHO2, STR_KYOSHO2, STR_SUBTYPE_KYOSHO2, 1, OPTION_NONE, 0, 0, SW_NRF, KYOSHO2_init, KYOSHO2_callback },
|
{PROTO_KYOSHO2, STR_KYOSHO2, STR_SUBTYPE_KYOSHO2, 1, OPTION_NONE, 0, 0, SW_NRF, KYOSHO2_init, KYOSHO2_callback },
|
||||||
|
@ -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 43
|
#define VERSION_PATCH_LEVEL 44
|
||||||
|
|
||||||
#define MODE_SERIAL 0
|
#define MODE_SERIAL 0
|
||||||
|
|
||||||
@ -439,6 +439,7 @@ enum KYOSHO
|
|||||||
{
|
{
|
||||||
KYOSHO_FHSS = 0,
|
KYOSHO_FHSS = 0,
|
||||||
KYOSHO_HYPE = 1,
|
KYOSHO_HYPE = 1,
|
||||||
|
KYOSHO_SYNCRO = 2,
|
||||||
};
|
};
|
||||||
enum JJRC345
|
enum JJRC345
|
||||||
{
|
{
|
||||||
@ -833,8 +834,8 @@ enum {
|
|||||||
#define DSM_RX_EEPROM_OFFSET 877 // (4) TX ID + format, 5 bytes, end is 882
|
#define DSM_RX_EEPROM_OFFSET 877 // (4) TX ID + format, 5 bytes, end is 882
|
||||||
#define MOULDKG_EEPROM_OFFSET 882 // RX ID, 3 bytes per model, end is 882+64*3=1074
|
#define MOULDKG_EEPROM_OFFSET 882 // RX ID, 3 bytes per model, end is 882+64*3=1074
|
||||||
#define DSM_CLONE_EEPROM_OFFSET 1074 // (4) TX ID, (1) Initialized, end is 1079
|
#define DSM_CLONE_EEPROM_OFFSET 1074 // (4) TX ID, (1) Initialized, end is 1079
|
||||||
#define TRAXXAS_EEPROM_OFFSET 1079 // RX ID, 2 bytes per model id, end is 1079+128=1207
|
#define TRAXXAS_EEPROM_OFFSET 1079 // RX ID and SOP index, 3 bytes per model id, end is 1079+192=1271
|
||||||
//#define CONFIG_EEPROM_OFFSET 1207 // Current configuration of the multimodule
|
//#define CONFIG_EEPROM_OFFSET 1271 // Current configuration of the multimodule
|
||||||
|
|
||||||
/* STM32 Flash Size */
|
/* STM32 Flash Size */
|
||||||
#ifndef DISABLE_FLASH_SIZE_CHECK
|
#ifndef DISABLE_FLASH_SIZE_CHECK
|
||||||
|
@ -734,6 +734,7 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
PROTO_KYOSHO
|
PROTO_KYOSHO
|
||||||
KYOSHO_FHSS
|
KYOSHO_FHSS
|
||||||
KYOSHO_HYPE
|
KYOSHO_HYPE
|
||||||
|
KYOSHO_SYNCRO
|
||||||
PROTO_KYOSHO2
|
PROTO_KYOSHO2
|
||||||
NONE
|
NONE
|
||||||
PROTO_LOLI
|
PROTO_LOLI
|
||||||
|
@ -113,7 +113,7 @@ CFlie|38|CFlie||||||||NRF24L01|
|
|||||||
[JOYSWAY](Protocols_Details.md#JOYSWAY---84)|84|||||||||NRF24L01|XN297
|
[JOYSWAY](Protocols_Details.md#JOYSWAY---84)|84|||||||||NRF24L01|XN297
|
||||||
[KF606](Protocols_Details.md#KF606---49)|49|KF606|MIG320|ZCZ50||||||NRF24L01|XN297
|
[KF606](Protocols_Details.md#KF606---49)|49|KF606|MIG320|ZCZ50||||||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|Syncro||||||A7105|
|
||||||
[Kyosho2](Protocols_Details.md#Kyosho2---93)|93|KT-17||||||||NRF24L01|
|
[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|
|
||||||
@ -343,6 +343,15 @@ A|E|T|R|CH5|CH6
|
|||||||
|
|
||||||
RX output will match the Hype standard AETR independently of the input configuration AETR, RETA... unless on OpenTX 2.3.3+ you use the "Disable channel mapping" feature on the GUI.
|
RX output will match the Hype standard AETR independently of the input configuration AETR, RETA... unless on OpenTX 2.3.3+ you use the "Disable channel mapping" feature on the GUI.
|
||||||
|
|
||||||
|
### Sub_protocol Syncro - *2*
|
||||||
|
Surface protocol called Syncro. TX: KT-331, RX: KR-331
|
||||||
|
|
||||||
|
Extended limits supported
|
||||||
|
|
||||||
|
CH1|CH2|CH3|CH4|CH5|CH6
|
||||||
|
---|---|---|---|---|---
|
||||||
|
STEERING|THROTTLE|CH3|CH4|CH5|CH6
|
||||||
|
|
||||||
## Pelikan - *60*
|
## Pelikan - *60*
|
||||||
Extended limits supported
|
Extended limits supported
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user