diff --git a/Lua_scripts/MultiChan.txt b/Lua_scripts/MultiChan.txt index fa1f291..452d4c7 100644 --- a/Lua_scripts/MultiChan.txt +++ b/Lua_scripts/MultiChan.txt @@ -139,6 +139,7 @@ 72,0,Q90C,Std,0,FMode,VTX+ 74,0,RadioLink,Surface,0,CH5,CH6,CH7,CH8,FS_CH1,FS_CH2,FS_CH3,FS_CH4,FS_CH5,FS_CH6,FS_CH7,FS_CH8 74,1,RadioLink,Air,0,CH5,CH6,CH7,CH8,FS_CH1,FS_CH2,FS_CH3,FS_CH4,FS_CH5,FS_CH6,FS_CH7,FS_CH8 +74,2,RadioLink,DumboRC,0,CH5,CH6,CH7,CH8,FS_CH1,FS_CH2,FS_CH3,FS_CH4,FS_CH5,FS_CH6,FS_CH7,FS_CH8 76,0,Realacc,R11,1,Flip,Light,Calib,HLess,RTH,UNK 50,0,Redpine,Fast,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16 50,1,Redpine,Slow,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16 diff --git a/Multiprotocol/Multi.txt b/Multiprotocol/Multi.txt index 2813c5a..8db8b9e 100644 --- a/Multiprotocol/Multi.txt +++ b/Multiprotocol/Multi.txt @@ -71,9 +71,10 @@ 71,JJRC345,JJRC345,SkyTmblr 72,Q90C 73,Kyosho,FHSS,Hype -74,RadioLink,Surface,Air +74,RadioLink,Surface,Air,DumboRC 75,--- 76,Realacc,R11 77,OMP 78,M-Link 79,WFLY,RF20x +80,E016H,E016Hv2 diff --git a/Multiprotocol/Multi_Names.ino b/Multiprotocol/Multi_Names.ino index 328cc62..70cde26 100644 --- a/Multiprotocol/Multi_Names.ino +++ b/Multiprotocol/Multi_Names.ino @@ -147,10 +147,10 @@ const char STR_SUBTYPE_WFLY2[] = "\x05""RF20x"; const char STR_SUBTYPE_HOTT[] = "\x07""Sync\0 ""No_Sync"; const char STR_SUBTYPE_PELIKAN[] = "\x04""Pro\0""Lite"; const char STR_SUBTYPE_V761[] = "\x03""3ch""4ch"; -const char STR_SUBTYPE_RLINK[] = "\x07""Surface""Air\0 "; +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_FUTABA[] = "\x05""SFHSS"; +const char STR_SUBTYPE_FUTABA[] = "\x05""SFHSS"; const char STR_SUBTYPE_JJRC345[] = "\x08""JJRC345\0""SkyTmblr"; enum @@ -346,7 +346,7 @@ const mm_protocol_definition multi_protocols[] = { {PROTO_Q90C, STR_Q90C, 0, NO_SUBTYPE, OPTION_RFTUNE }, #endif #if defined(RLINK_CC2500_INO) - {PROTO_RLINK, STR_RLINK, 2, STR_SUBTYPE_RLINK, OPTION_RFTUNE }, + {PROTO_RLINK, STR_RLINK, 3, STR_SUBTYPE_RLINK, OPTION_RFTUNE }, #endif #if defined(REALACC_NRF24L01_INO) {PROTO_REALACC, STR_REALACC, 1, STR_SUBTYPE_REALACC, OPTION_NONE }, diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index 132b65e..60e3f9f 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -19,7 +19,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 3 #define VERSION_REVISION 1 -#define VERSION_PATCH_LEVEL 88 +#define VERSION_PATCH_LEVEL 89 //****************** // Protocols @@ -413,6 +413,13 @@ enum JJRC345 SKYTMBLR = 1, }; +enum RLINK +{ + RLINK_SURFACE = 0, + RLINK_AIR = 1, + RLINK_DUMBORC = 2, +}; + #define NONE 0 #define P_HIGH 1 #define P_LOW 0 @@ -1036,6 +1043,10 @@ Serial: 100000 Baud 8e2 _ xxxx xxxx p -- sub_protocol==JJRC345 JJRC345 0 SKYTMBLR 1 + sub_protocol==RLINK + RLINK_SURFACE 0 + RLINK_AIR 1 + RLINK_DUMBORC 2 Power value => 0x80 0=High/1=Low Stream[3] = option_protocol; diff --git a/Multiprotocol/RadioLink_cc2500.ino b/Multiprotocol/RadioLink_cc2500.ino index 7c24a6c..18c3088 100644 --- a/Multiprotocol/RadioLink_cc2500.ino +++ b/Multiprotocol/RadioLink_cc2500.ino @@ -133,6 +133,12 @@ static void __attribute__((unused)) RLINK_rf_init() for (uint8_t i = 0; i < 39; ++i) CC2500_WriteReg(i, pgm_read_byte_near(&RLINK_init_values[i])); + if(sub_protocol==RLINK_DUMBORC) + { + CC2500_WriteReg(4, 0xBA); + CC2500_WriteReg(5, 0xDC); + } + prev_option = option; CC2500_WriteReg(CC2500_0C_FSCTRL0, option); @@ -160,16 +166,22 @@ static void __attribute__((unused)) RLINK_send_packet() // packet length packet[0] = RLINK_TX_PACKET_LEN; // header - if(sub_protocol) - packet[1] = 0x21; //air 0x21 on dump but it looks to support telemetry at least RSSI - else - {//surface - packet[1] = 0x01; - //radiolink additionnal ID which is working only on a small set of RXs - //if(RX_num) packet[1] |= ((RX_num+2)<<4)+4; // RX number limited to 10 values, 0 is a wildcard - } if(packet_count>3) - packet[1] |= 0x02; // 0x02 telemetry request flag + packet[1] = 0x02; // 0x02 telemetry request flag + switch(sub_protocol) + { + case RLINK_SURFACE: + packet[1] |= 0x01; + //radiolink additionnal ID which is working only on a small set of RXs + //if(RX_num) packet[1] |= ((RX_num+2)<<4)+4; // RX number limited to 10 values, 0 is a wildcard + break; + case RLINK_AIR: + packet[1] |= 0x21; //air 0x21 on dump but it looks to support telemetry at least RSSI + break; + case RLINK_DUMBORC: + packet[1] = 0x00; //always 0x00 on dump + break; + } // ID memcpy(&packet[2],rx_tx_addr,RLINK_TX_ID_LEN); diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h index 7a303bf..283ce29 100644 --- a/Multiprotocol/_Config.h +++ b/Multiprotocol/_Config.h @@ -724,7 +724,9 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= { RED_FAST RED_SLOW PROTO_RLINK - NONE + RLINK_SURFACE + RLINK_AIR + RLINK_DUMBORC PROTO_SCANNER NONE PROTO_FUTABA diff --git a/Protocols_Details.md b/Protocols_Details.md index 9d4b906..836338e 100644 --- a/Protocols_Details.md +++ b/Protocols_Details.md @@ -632,17 +632,20 @@ CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|FS_CH1|FS_CH2|FS_CH3|FS_CH4|FS_CH5|FS_CH6|FS_CH7 FS=FailSafe ### Sub_protocol Surface - *0* -Surface protocol. TXs: RC4GS,RC6GS. Compatible RXs:R7FG(Std),R6FG,R6F,R8EF,R8FM,R8F,R4FGM,R4F +Surface protocol. TXs: RC4GS,RC6GS. Compatible RXs: R7FG(Std),R6FG,R6F,R8EF,R8FM,R8F,R4FGM,R4F CH1=Steering, CH2=Throttle, CH8=Gyro gain Telemetry: RX_RSSI (for the original value add -256), TX_RSSI, TX_QLY (0..100%), A1=RX_Batt (set the ratio to 12.7 and adjust with offset), A2=Batt (set the ratio to 25.5 and adjust with offset) ### Sub_protocol Air - *1* -Air protocol. TXs: T8FB,T8S. Compatible RXs:R8EF,R8FM,R8SM,R4FG,R4F +Air protocol. TXs: T8FB,T8S. Compatible RXs: R8EF,R8FM,R8SM,R4FG,R4F Telemetry: RX_RSSI (for the original value add -256), TX_RSSI, TX_QLY (0..100%) +### Sub_protocol DumboRC - *2* +Compatible RXs: X6/X6F/X6FG + ## Futaba - *21* Also called SFHSS depending on radio version.